Anehnya, paket PHP yang disediakan oleh Ubuntu tidak dikompilasi dengan Driver asli MySQL , tetapi dengan libmysqlclient yang lama sebagai gantinya (diuji pada Ubuntu 13.10 dengan paket default):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Kasus uji Anda ("Edit 4", dengan setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) bekerja seperti yang diharapkan dengan PHP 5.5.3 yang dikompilasi secara manual dengan mysqlnd dengan:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... tetapi gagal dengan:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Cukup aneh bahwa itu gagal hanya jika pernyataan pertama dieksekusi dua kali; ini pasti bug di libmysqlclient pengemudi.
Kedua driver gagal seperti yang diharapkan saat MYSQL_ATTR_USE_BUFFERED_QUERY
adalah false
. Akal Sehat Anda sudah ditunjukkan
mengapa ini adalah perilaku yang diharapkan, terlepas dari jumlah baris dalam kumpulan hasil.
Mike menemukan bahwa solusi saat ini adalah menginstal php5-mysqlnd
paket alih-alih php5-mysql
yang direkomendasikan Canonical .