Stranamente, i pacchetti PHP forniti da Ubuntu non sono compilati con Driver nativo di MySQL , ma con il vecchio libmysqlclient invece (testato su Ubuntu 13.10 con pacchetti predefiniti):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Il tuo caso di prova ("Modifica 4", con setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) funziona come previsto con PHP 5.5.3 compilato manualmente con mysqlnd con:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... ma non riesce con:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
È abbastanza strano che fallisca solo se la prima istruzione viene eseguita due volte; questo deve essere un bug nel libmysqlclient conducente.
Entrambi i driver non funzionano come previsto quando MYSQL_ATTR_USE_BUFFERED_QUERY
è false
. Il tuo buon senso ha già dimostrato
perché questo è il comportamento previsto, indipendentemente dal numero di righe nel set di risultati.
Mike ha scoperto che l'attuale soluzione è l'installazione di php5-mysqlnd
pacchetto invece del raccomandato da Canonical php5-mysql
.