Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la causa dell'errore PDO Impossibile eseguire query mentre altre query senza buffer sono attive?

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 .