Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O que está causando o erro PDO Não é possível executar consultas enquanto outras consultas sem buffer estão ativas?


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 .