Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Điều gì đang gây ra lỗi PDO Không thể thực hiện các truy vấn trong khi các truy vấn không có bộ đệm khác đang hoạt động?

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_QUERYfalse . 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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đối sánh toàn bộ từ với các ký tự dấu chấm trong MySQL

  2. Thay đổi công cụ bảng trong MySQL

  3. Hàng đầu tiên trong nhóm theo hàng so với hàng cuối cùng

  4. Cách tạo danh sách thả xuống theo tầng bằng cách sử dụng mysql và php

  5. Làm thế nào để có được số hàng bị ảnh hưởng, trong khi thực hiện truy vấn MySQL từ bash?