Kupodivu balíčky PHP poskytované Ubuntu nejsou kompilovány pomocí Nativní ovladač Mysql , ale se starým libmysqlclient místo toho (testováno na Ubuntu 13.10 s výchozími balíčky):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Váš velmi testovací případ ("Edit 4", s setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) funguje podle očekávání s PHP 5.5.3 ručně zkompilovaným pomocí mysqlnd s:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... ale selže s:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Je docela zvláštní, že selže pouze tehdy, když je první příkaz proveden dvakrát; to musí být chyba v libmysqlclient řidič.
Oba ovladače selžou podle očekávání, když MYSQL_ATTR_USE_BUFFERED_QUERY
je false
. Váš zdravý rozum se již ukázal
proč je to očekávané chování, bez ohledu na počet řádků v sadě výsledků.
Mike zjistil, že aktuálním řešením je instalace php5-mysqlnd
místo balíčku php5-mysql
doporučeného společností Canonical .