Колкото и да е странно, PHP пакетите, предоставени от Ubuntu, не са компилирани с Работен драйвер за 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
Вашият тестов случай („Редактиране 4“, с setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) работи както се очаква с PHP 5.5.3, ръчно компилиран с mysqlnd с:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... но не успява с:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Доста странно е, че се проваля само ако първият оператор се изпълни два пъти; това трябва да е грешка в libmysqlclient шофьор.
И двата драйвера се провалят според очакванията, когато MYSQL_ATTR_USE_BUFFERED_QUERY
е false
. Вашият здрав разум вече е демонстриран
защо това е очаквано поведение, независимо от броя на редовете в набора от резултати.
Майк разбра, че текущото решение е инсталиране на php5-mysqlnd
пакет вместо препоръчания от Canonical php5-mysql
.