sql >> Database >  >> RDS >> Mysql

Waardoor wordt de PDO-fout veroorzaakt. Kan geen query's uitvoeren terwijl andere niet-gebufferde query's actief zijn?

Vreemd genoeg zijn de PHP-pakketten die door Ubuntu worden geleverd niet gecompileerd met de Inheemse Mysql-stuurprogramma , maar met de oude libmysqlclient in plaats daarvan (getest op Ubuntu 13.10 met standaardpakketten):

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

Uw zeer testcase ("Bewerken 4", met setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true) ) werkt zoals verwacht met PHP 5.5.3 handmatig gecompileerd met mysqlnd met:

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

... maar mislukt met:

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

Het is nogal vreemd dat het alleen mislukt als de eerste instructie twee keer wordt uitgevoerd; dit moet een bug zijn in de libmysqlclient chauffeur.

Beide stuurprogramma's werken niet zoals verwacht wanneer MYSQL_ATTR_USE_BUFFERED_QUERY is false . Je gezond verstand al aangetoond waarom dit verwacht gedrag is, ongeacht het aantal rijen in de resultatenset.

Mike ontdekte dat de huidige oplossing het installeren van de php5-mysqlnd . is pakket in plaats van de door Canoniek aanbevolen php5-mysql .



  1. GROUP BY in de clausule UPDATE FROM

  2. Waarom krijg ik de foutmelding Xml-gegevenstype wordt niet ondersteund in gedistribueerde query's wanneer ik een gekoppelde server vraag naar niet-xml-gegevens?

  3. Fout bij het declareren van integer-variabele in de MySQL-opgeslagen functie

  4. Kan de waarde voor automatisch verhogen van de opslagengine niet lezen, foutnummer:1467