sql >> Databasteknik >  >> RDS >> Mysql

Vad orsakar PDO-fel Kan inte köra frågor medan andra obuffrade frågor är aktiva?

Märkligt nog är PHP-paketen som tillhandahålls av Ubuntu inte kompilerade med Inbyggd Mysql-drivrutin , men med den gamla libmysqlclienten istället (testat på Ubuntu 13.10 med standardpaket):

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

Ditt testfall ("Redigera 4", med setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true) ) fungerar som förväntat med PHP 5.5.3 manuellt kompilerad med mysqlnd med:

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

... men misslyckas med:

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

Det är ganska konstigt att det bara misslyckas om den första satsen körs två gånger; detta måste vara ett fel i libmysqlclienten förare.

Båda drivrutinerna misslyckas som förväntat när MYSQL_ATTR_USE_BUFFERED_QUERY är false . Ditt sunt förnuft har redan demonstrerats varför detta är förväntat beteende, oavsett antalet rader i resultatuppsättningen.

Mike fick reda på att den aktuella lösningen är att installera php5-mysqlnd paketet istället för det Canonical-rekommenderade php5-mysql .



  1. Hur räknar jag unika besökare på min webbplats?

  2. Hur skapar man en främmande nyckel med ON UPDATE CASCADE på Oracle?

  3. Uppdaterar från MYSQL till MYSQLI

  4. Konvertera ett datum i MySQL från strängfält