Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво причинява PDO грешка Не може да се изпълняват заявки, докато други небуферирани заявки са активни?

Колкото и да е странно, PHP пакетите, предоставени от Ubuntu, не са компилирани с Работен драйвер за Mysql , но със стария libmysqlclient вместо това (тествано на Ubuntu 13.10 с пакети по подразбиране):

<?php
echo $dbh->getAttribute(PDO::ATTR_CLIENT_VERSION); // prints "5.5.35", i.e MySQL version
// prints "mysqlnd (...)" when using mysqlnd

Вашият тестов случай („Редактиране 4“, с setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true) ) работи както се очаква с PHP 5.5.3, ръчно компилиран с mysqlnd с:

./configure --with-pdo-mysql=mysqlnd # default driver since PHP v5.4

... но не успява с:

bash> ./configure --with-pdo-mysql=/usr/bin/mysql_config

Доста странно е, че се проваля само ако първият оператор се изпълни два пъти; това трябва да е грешка в libmysqlclient шофьор.

И двата драйвера се провалят според очакванията, когато MYSQL_ATTR_USE_BUFFERED_QUERY е false . Вашият здрав разум вече е демонстриран защо това е очаквано поведение, независимо от броя на редовете в набора от резултати.

Майк разбра, че текущото решение е инсталиране на php5-mysqlnd пакет вместо препоръчания от Canonical php5-mysql .



  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

  2. SQLSTATE[HY093]:Невалиден номер на параметър:параметърът не е дефиниран

  3. Кое съпоставяне на MySQL е най-добро за приемане на всички уникод символи?

  4. Ruby, Rails:mysql2 gem, някой използва ли този скъпоценен камък? Стабилен ли е?

  5. Изтрийте дублирани записи от таблица без pk или id или уникални колони в mysql