Seltsamerweise werden die von Ubuntu bereitgestellten PHP-Pakete nicht mit dem Nativer Mysql-Treiber , aber mit dem alten libmysqlclient stattdessen (getestet auf Ubuntu 13.10 mit Standardpaketen):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Ihr Testfall ("Edit 4", mit setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) funktioniert wie erwartet mit PHP 5.5.3 manuell kompiliert mit mysqlnd mit:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... aber schlägt fehl mit:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Es ist ziemlich seltsam, dass es nur fehlschlägt, wenn die erste Anweisung zweimal ausgeführt wird; das muss ein Fehler im libmysqlclient sein Fahrer.
Beide Treiber schlagen wie erwartet fehl, wenn MYSQL_ATTR_USE_BUFFERED_QUERY
ist false
. Dein gesunder Menschenverstand wurde bereits bewiesen
warum dies das erwartete Verhalten ist, unabhängig von der Anzahl der Zeilen in der Ergebnismenge.
Mike hat herausgefunden, dass die aktuelle Problemumgehung die Installation von php5-mysqlnd
ist Paket anstelle des von Canonical empfohlenen php5-mysql
.