Edit report at https://bugs.php.net/bug.php?id=63812&edit=1
ID: 63812 Comment by: fog at yandex dot ru Reported by: sergey at shymko dot net Summary: PDO Triggers Warning(s) Regardless of Error Handling Strategy Status: Open Type: Bug Package: PDO related Operating System: Linux PHP Version: 5.3.19 Block user comment: N Private report: N New Comment: There is another similar problem, sometimes connection fails with message: Warning: PDO::__construct(): MySQL server has gone away in [...file_path...] on line N It happens despiting that PDO::ATTR_ERRMODE is set to PDO::ERRMODE_EXCEPTION Previous Comments: ------------------------------------------------------------------------ [2012-12-20 05:34:45] sergey at shymko dot net Relates to https://bugs.php.net/bug.php?id=63546 ------------------------------------------------------------------------ [2012-12-20 05:25:22] sergey at shymko dot net Description: ------------ PDO triggers warning(s) regardless of the chosen error handling strategy http://php.net/manual/en/pdo.error-handling.php Environment: - mysql Ver 14.14 Distrib 5.5.22, for Linux (x86_64) using EditLine wrapper Test script: --------------- <?php $adapter = new PDO('mysql:host=localhost;db_name=test', 'root', ''); $adapter->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); assert($adapter->getAttribute(PDO::ATTR_ERRMODE) === PDO::ERRMODE_EXCEPTION); $waitTimeout = 1; $adapter->exec("SET @@session.wait_timeout = {$waitTimeout}"); $statement = $adapter->query('SELECT @@session.wait_timeout'); assert($statement->fetchColumn() == $waitTimeout); /** * Ensure 'MySQL server has gone away' conditions are met */ sleep($waitTimeout + 1); $adapter->query('SELECT 1'); Expected result: ---------------- - PDOException with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' - No warnings (because of the chosen PDO error handling strategy) Actual result: -------------- 1. When connection type is TCP/IP: 1. Warning: PDO::query() [pdo.query]: MySQL server has gone away 2. Warning: PDO::query() [pdo.query]: Error reading result set's header 1'. When connection type is Unix socket: 1. Warning: Error while sending QUERY packet. PID=18586 2. PDOException with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=63812&edit=1