0

MDB2 を使用して MySQL データベースにクエリを実行していますが、データベースにクエリを実行すると、MySQL ログは 2 つのステートメントをトレースします。最初のステートメントは Explain ステートメントで、2 つ目はクエリです。

コードは次のとおりです。

$sql = "SELECT 1 FROM DUAL";
$mdb2Instance = new MDB2();
$options = array(
        'portability' => MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_FIX_CASE,
    );
$connection = $mdb2Instance->singleton($dsn, null);
$connection->setFetchMode(MDB2_FETCHMODE_ASSOC);
$connection->query($sql);

そして、MySQL で次のログを取得します。

    5 Init DB   cma
    5 Query EXPLAIN SELECT 1 FROM DUAL
    5 Query SELECT 1 FROM DUAL
    5 Quit

誰かが何が起こっているのか、これを防ぐ方法を説明できますか?

よろしく
アルバン

4

1 に答える 1

0

これは PHP 設定ディレクティブが原因です>mysql.trace-mode

この設定をオンにすると、すべてのクエリの前にクエリが表示されEXPLAINます。PHP のマニュアルには、この動作が発生するとは記載されておらず、問題が発生する可能性があるため残念です (多くのアプリは のようなクエリを頼りにしていますFOUND_ROWS())。

オフに設定すると、問題が解決するはずです。

于 2012-02-22T16:18:10.830 に答える