Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa yang menyebabkan kesalahan PDO Tidak dapat menjalankan kueri saat kueri tanpa buffer lainnya aktif?

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:MEMBUTUHKAN SSL tidak ditampilkan dalam hibah

  2. Masalah indeks MySQL FULLTEXT

  3. SQL WHERE kolom =semuanya

  4. Konversi skrip MySQL ke SQL Server

  5. Hapus Data dari Database MySQL