Curiosamente, os pacotes PHP fornecidos pelo Ubuntu não são compilados com o Driver nativo do MySQL , mas com o antigo libmysqlclient em vez disso (testado no Ubuntu 13.10 com pacotes padrão):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Seu próprio caso de teste ("Edit 4", com
setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) funciona como esperado com PHP 5.5.3 compilado manualmente com mysqlnd com:./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... mas falha com:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
É muito estranho que falhe apenas se a primeira instrução for executada duas vezes; isso deve ser um bug no libmysqlclient motorista.
Ambos os drivers falham conforme o esperado quando
MYSQL_ATTR_USE_BUFFERED_QUERY
é false
. Seu bom senso já demonstrado
por que esse é o comportamento esperado, independentemente do número de linhas no conjunto de resultados. Mike descobriu que a solução atual é instalar o
php5-mysqlnd
pacote em vez do php5-mysql
recomendado pela Canonical .