Curiosamente, los paquetes PHP proporcionados por Ubuntu no están compilados con Controlador nativo de MySQL , pero con el antiguo libmysqlclient en su lugar (probado en Ubuntu 13.10 con paquetes predeterminados):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Tu mismo caso de prueba ("Editar 4", con setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) funciona como se esperaba con PHP 5.5.3 compilado manualmente con mysqlnd con:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... pero falla con:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Es bastante extraño que falle solo si la primera declaración se ejecuta dos veces; esto debe ser un error en libmysqlclient conductor.
Ambos controladores fallan como se esperaba cuando MYSQL_ATTR_USE_BUFFERED_QUERY
es false
. Tu sentido común ya demostró
por qué este es el comportamiento esperado, independientemente del número de filas en el conjunto de resultados.
Mike descubrió que la solución actual es instalar php5-mysqlnd
paquete en lugar del php5-mysql
recomendado por Canonical .