sql >> Databáze >  >> RDS >> Mysql

Co způsobuje chybu PDO Nelze provádět dotazy, když jsou aktivní jiné dotazy bez vyrovnávací paměti?

Kupodivu balíčky PHP poskytované Ubuntu nejsou kompilovány pomocí Nativní ovladač Mysql , ale se starým libmysqlclient místo toho (testováno na Ubuntu 13.10 s výchozími balíčky):

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

Váš velmi testovací případ ("Edit 4", s setAttribute(MYSQL_ATTR_USE_BUFFERED_QUERY, true) ) funguje podle očekávání s PHP 5.5.3 ručně zkompilovaným pomocí mysqlnd s:

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

... ale selže s:

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

Je docela zvláštní, že selže pouze tehdy, když je první příkaz proveden dvakrát; to musí být chyba v libmysqlclient řidič.

Oba ovladače selžou podle očekávání, když MYSQL_ATTR_USE_BUFFERED_QUERY je false . Váš zdravý rozum se již ukázal proč je to očekávané chování, bez ohledu na počet řádků v sadě výsledků.

Mike zjistil, že aktuálním řešením je instalace php5-mysqlnd místo balíčku php5-mysql doporučeného společností Canonical .



  1. 2 Funkce, které v MySQL vracejí název měsíce z data

  2. Aktualizujte MySQL bez uvedení názvů sloupců

  3. jak získat přístup k příkazovému řádku pro xampp v systému Windows

  4. Jak vytvořím alias tabulky v MySQL