|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-11-22 16:06 UTC] camka at email dot ee
Description:
------------
After running several "non-select" queries with mysqli::multi_query() it's impossible to run mysqli::query() method with some "select" query, the mysqli::error says "MySQL server has gone away".
If iterate through all the results of mysqli::multi_query() using mysqli::next_result(), then the program won't issue the "gone away" problem and the following mysqli::query() runs as expected.
tried with the latest cvs snapshot.
PHP Version 5.0.6-dev Nov 22 2005 10:22:22
On one machine it needs to hit browser's "refresh" button to get an error, on other machine the error comes every single program run.
Reproduce code:
---------------
<?php
$s = new mysqli('localhost', '******', '*******', '*****');
$s -> multi_query('drop temporary table if exists z1; create temporary table z1(u int);');
// if uncomment the following line, the script works as expected
// while ($s->next_result());
echo "- ",$s -> error,"<br>";
$s -> query("SELECT count(*) from z1");
echo "- ",$s -> error,"<br>";
$s->close();
?>qu
Expected result:
----------------
-
-
(two empty errors)
Actual result:
--------------
-
- MySQL server has gone away
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 04:00:01 2025 UTC |
but still, if i use selects in multi_query: $s -> multi_query("select 1;select 2"); and then $s -> query("select 3"); i get more understandable error - 2014 - Commands out of sync; you can't run this command now Why then the server goes away in case of non-select queries? Out of sync error would be less confusing.Can't repeat: <?php $mysql = new mysqli('localhost', 'test', 'php', 'test'); printf("Client version: %s\n", $mysql->client_version); printf("Server version: %s\n", $mysql->server_version); $mysql->multi_query('drop temporary table if exists z1; create temporary table z1(u int);'); printf("Error: %s\n", $mysql->error); $mysql->multi_query("SELECT 1;SELECT 2"); printf("Error: %s\n", $mysql->error); $mysql->query("SELECT count(*) from z1"); printf("Error: %s\n", $mysql->error); $mysql->close(); ?> Output: php -f 35333.php Client version: 50015 Server version: 50015 Error: Packets out of order (Found: 2, expected 1) Error: Lost connection to MySQL server during query Error: MySQL server has gone away