Bug #70066 [Opn->Ver]: Unexpected "Cannot execute queries while other unbuffered queries"

From: Date: Wed, 09 Dec 2020 16:06:55 +0000
Subject: Bug #70066 [Opn->Ver]: Unexpected "Cannot execute queries while other unbuffered queries"
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-230966@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=70066&edit=1 ID: 70066 Updated by: nikic@php.net Reported by: david at grudl dot com Summary: Unexpected "Cannot execute queries while other unbuffered queries" -Status: Open +Status: Verified Type: Bug Package: PDO MySQL PHP Version: 5.6.11 Block user comment: N Private report: N New Comment: The relevant part here is that "USE" is not supported by prepared statements. MySQL returns error 1295 and PDO checks for that and falls back to emulated prepared statements. But presumably that doesn't work correctly. Previous Comments: ------------------------------------------------------------------------ [2018-06-06 17:30:44] kbenton at activecampaign dot com kbenton@localhost  ~  php --version PHP 7.2.6 (cli) (built: May 22 2018 16:22:08) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies kbenton@localhost  ~  php testme.php Exception caught: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute. Here! kbenton@localhost  ~  cat testme.php <?php try { $pdo = new PDO('mysql:host=127.0.0.1', 'aql_app', '@ql_@pp'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); $pdo->query('USE aql_db'); } catch ( Exception $e ) { echo "Exception caught: {$e->getMessage()}\n"; } echo "Here!\n"; kbenton@localhost  ~  ------------------------------------------------------------------------ [2015-07-13 18:32:11] david at grudl dot com Description: ------------ This code throws "SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active" on line 4. The solution is to use exec() instead of query(), but I think that it is bug since there is no other active query. Test script: --------------- $pdo = new PDO('mysql:host=127.0.0.1', '...', '...'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0); $pdo->query('USE nette_test'); ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=70066&edit=1

« previous php.bugs (#230966) next »