sql >> Base de Datos >  >> RDS >> Mysql

¿Qué está causando el error PDO? ¿No se pueden ejecutar consultas mientras otras consultas sin búfer están activas?

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 .