Vreemd genoeg zijn de PHP-pakketten die door Ubuntu worden geleverd niet gecompileerd met de Inheemse Mysql-stuurprogramma , maar met de oude libmysqlclient in plaats daarvan (getest op Ubuntu 13.10 met standaardpakketten):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Uw zeer testcase ("Bewerken 4", met setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) werkt zoals verwacht met PHP 5.5.3 handmatig gecompileerd met mysqlnd met:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... maar mislukt met:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Het is nogal vreemd dat het alleen mislukt als de eerste instructie twee keer wordt uitgevoerd; dit moet een bug zijn in de libmysqlclient chauffeur.
Beide stuurprogramma's werken niet zoals verwacht wanneer MYSQL_ATTR_USE_BUFFERED_QUERY
is false
. Je gezond verstand al aangetoond
waarom dit verwacht gedrag is, ongeacht het aantal rijen in de resultatenset.
Mike ontdekte dat de huidige oplossing het installeren van de php5-mysqlnd
. is pakket in plaats van de door Canoniek aanbevolen php5-mysql
.