Bug #81335 [Ver]: PHP Warning, Packets out of order after connection timeout

From: Date: Fri, 06 Aug 2021 18:16:59 +0000
Subject: Bug #81335 [Ver]: PHP Warning, Packets out of order after connection timeout
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-235654@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81335&edit=1 ID: 81335 Updated by: cmb@php.net Reported by: bohuslav at simek dot si Summary: PHP Warning, Packets out of order after connection timeout Status: Verified Type: Bug Package: PDO MySQL Operating System: Alpine Linux 3.14 PHP Version: 7.4.22 Block user comment: N Private report: N New Comment: With MySQL 5.6.44 and 8.0.19 I get: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away I'm waiting for the update to 8.0.26 to finish for about eight hours now. I'll test with that version when it's finished (if it ever finishes). Previous Comments: ------------------------------------------------------------------------ [2021-08-06 12:43:21] dharman@php.net Thanks for reporting. This indeed should be fixed in mysqlnd. Tested on git.master and the mysqlnd client doesn't notice the connection has dropped when sending a query. ------------------------------------------------------------------------ [2021-08-06 10:37:58] bohuslav at simek dot si Description: ------------ After migration from MySQL 8.0.23 to 8.0.25 a warning "Packets out of order. Expected 1 received 0. Packet size=145" will be shown after MySQL connection timeout. mysqlnd is used a as connection library. pdo_mysql PDO Driver for MySQL => enabled Client API version => mysqlnd 8.0.8 I don't want to speculate, but this can be caused by changes introduce in Connection Management by MySQL 8.0.24 (https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-24.html header Connection Management Notes) as MySQL now provides reason why client has been disconnected. Test script: --------------- <?php declare(strict_types=1); $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => false, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET time_zone = "UTC"', PDO::ATTR_EMULATE_PREPARES => true, ]; $pdo = new PDO( 'mysql:dbname=unit_tests;host=mysql-test;port=3306;charset=utf8mb4', 'root', '', $options ); $pdo->exec('SET SESSION wait_timeout=1'); sleep(3); $pdo->exec('SELECT 123'); // PHP Warning: Packets out of order. Expected 1 received 0. Packet size=145 Expected result: ---------------- warning "Packets out of order. Expected 1 received 0. Packet size=145" should not happen. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=81335&edit=1

« previous php.bugs (#235654) next »