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

Hvad forårsager PDO-fejl Kan ikke udføre forespørgsler, mens andre ubuffrede forespørgsler er aktive?

Mærkeligt nok er PHP-pakkerne leveret af Ubuntu ikke kompileret med Native Mysql-driver , men med den gamle libmysqlclient i stedet (testet på Ubuntu 13.10 med standardpakker):

<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd

Din selve testcase ("Rediger 4", med setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true) ) fungerer som forventet med PHP 5.5.3 manuelt kompileret med mysqlnd med:

./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4

... men fejler med:

bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config

Det er ret mærkeligt, at det kun mislykkes, hvis den første sætning udføres to gange; dette må være en fejl i libmysqlclienten chauffør.

Begge drivere fejler som forventet, når MYSQL_ATTR_USE_BUFFERED_QUERY er false . Din sunde fornuft er allerede demonstreret hvorfor dette er forventet adfærd, uanset antallet af rækker i resultatsættet.

Mike fandt ud af, at den aktuelle løsning er at installere php5-mysqlnd pakke i stedet for den Canonical-anbefalede php5-mysql .



  1. RoR:Kan ikke ændre_kolonne i postgres, fint i MySQL (MySQL til udvikling, Postgres på Heroku)

  2. Mapping array med Hibernate

  3. Skinner:Udrulning til Heroku, mange problemer

  4. Få kun cifre ved hjælp af regexp