2

私はphpから別のビューからビューを作成しようとしていますが、エラーは発生しませんが、単純にビューを作成しません。mysqlコンソールで別のビューを手動で作成できますが、phpからは作成できません。私が間違っているところはありますか?

function createTransaction_file($db,$file_id){

      $sql = "CREATE VIEW transaction_file AS SELECT context,transaction_type,starttime,stoptime,stoptime - starttime AS runtime,correlator,parent_correlator,iteration FROM transactions WHERE file_id =" . $file_id . " ORDER BY starttime" ;

      //echo $sql;

      if($stmt = $db->prepare($sql)){

         /* execute query */
         $stmt->execute();
      }else{

       echo "File id is ". $file_id;

       echo "Error code ({$db->errno}): {$db->error}";

       die("Could not create transaction_iter view");
    }

    /* close statement */
    $stmt->close();

}

function createTransaction_iter($db,$iteration){

      $sql = "CREATE VIEW transaction_iter AS SELECT context,transaction_type,starttime,stoptime,stoptime - starttime AS runtime,correlator,parent_correlator,iteration FROM transaction_file WHERE iteration = ".$iteration." LIMIT 500;" ;

      //echo $sql;

      if($stmt = $db->prepare($sql)){

         /* execute query */
         $stmt->execute();


      }else{

       echo "File id is ". $file_id;

       echo "Error code ({$db->errno}): {$db->error}";

       die("Could not create transaction_iter view");
    }

    /* close statement */
    $stmt->close();

}

createTransaction_file($db,$file_id);
createTransaction_iter($db,$iteration);
4

1 に答える 1

1

エラーの詳細を取得していないだけだと思います。繰り返しますが、if/else ブロックは意図したものではないと思います。次のようなことを試してください:

$stmt = $db->prepare($sql);

if (! $stmt->execute()) {
    $arr = $stmt->errorInfo();
    print_r($arr);
}  

更新:予想どおり、エラー メッセージは、ユーザーに必要なアクセス許可がないことを示しています。あなたの見解は異なる権利で作成されたと思います。同様の SO 投稿があります: mysql は誰がログインしているかを忘れます: コマンドはユーザー ''@'%' に拒否されました。

于 2013-11-05T16:20:15.183 に答える