Curieusement, les packages PHP fournis par Ubuntu ne sont pas compilés avec le Pilote natif MySQL , mais avec l'ancien libmysqlclient à la place (testé sur Ubuntu 13.10 avec les packages par défaut) :
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Votre scénario de test ("Edit 4", avec setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) fonctionne comme prévu avec PHP 5.5.3 compilé manuellement avec mysqlnd avec :
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... mais échoue avec :
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Il est assez étrange qu'il n'échoue que si la première instruction est exécutée deux fois ; cela doit être un bogue dans le libmysqlclient chauffeur.
Les deux pilotes échouent comme prévu lorsque MYSQL_ATTR_USE_BUFFERED_QUERY
est false
. Votre bon sens déjà démontré
pourquoi ce comportement est attendu, quel que soit le nombre de lignes dans le jeu de résultats.
Mike a découvert que la solution actuelle consiste à installer le php5-mysqlnd
package au lieu du php5-mysql
recommandé par Canonical .