奇妙なことに、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
。