Thật kỳ lạ, các gói PHP do Ubuntu cung cấp không được biên dịch với Trình điều khiển gốc Mysql , nhưng với libmysqlclient cũ thay vào đó (được thử nghiệm trên Ubuntu 13.10 với các gói mặc định):
<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd
Trường hợp thử nghiệm của bạn ("Chỉnh sửa 4", với setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true)
) hoạt động như mong đợi với PHP 5.5.3 được biên dịch thủ công bằng mysqlnd với:
./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4
... nhưng không thành công với:
bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config
Điều khá kỳ lạ là nó chỉ không thành công nếu câu lệnh đầu tiên được thực hiện hai lần; đây phải là một lỗi trong libmysqlclient người lái xe.
Cả hai trình điều khiển đều không thành công như mong đợi khi MYSQL_ATTR_USE_BUFFERED_QUERY
là false
. Nhận thức chung của bạn đã được chứng minh
tại sao đây là hành vi được mong đợi, bất kể số hàng trong tập hợp kết quả.
Mike phát hiện ra rằng giải pháp hiện tại là cài đặt php5-mysqlnd
gói thay vì php5-mysql
được Canonical đề xuất .