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
.