sql >> データベース >  >> RDS >> Mysql

PDOエラーの原因他のバッファリングされていないクエリがアクティブな間はクエリを実行できませんか?

    奇妙なことに、Ubuntuが提供するPHPパッケージは、Mysqlネイティブドライバー 、ただし、古い libmysqlclient 代わりに(デフォルトパッケージを使用してUbuntu 13.10でテスト済み):

    <?php
    echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
    // prints "mysqlnd (...)" when using mysqlnd
    

    あなたのテストケース( "Edit 4"、setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true) )mysqlndを使用して手動でコンパイルされたPHP 5.5.3で期待どおりに機能します:

    ./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
    

    ...しかし失敗する:

    bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
    

    最初のステートメントが2回実行された場合にのみ失敗するのは非常に奇妙です。これはlibmysqlclientのバグである必要があります ドライバー。

    MYSQL_ATTR_USE_BUFFERED_QUERYの場合、両方のドライバーが期待どおりに失敗します falseです 。 あなたの常識はすでに実証されています 結果セットの行数に関係なく、これが予想される動作である理由。

    Mikeは、現在の回避策がphp5-mysqlndをインストールしていることを発見しました。 Canonicalの代わりにパッケージ-推奨されるphp5-mysql



    1. MySQLとMongoDB

    2. Mysqlは各グループの最後の行を選択します

    3. Mysql-すべてのテーブルと列の名前を小文字に変更しますか?

    4. 書き込みセッションは1ページまたはすべてのページで開始しますか?