Bug #53185 [Com]: PDO_MYSQL constructor, PHP warning w/ Exception error mode

From: Date: Mon, 15 Dec 2014 10:28:36 +0000
Subject: Bug #53185 [Com]: PDO_MYSQL constructor, PHP warning w/ Exception error mode
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-189068@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=53185&edit=1 ID: 53185 Comment by: s dot adrichem at daisycon dot com Reported by: alexc223 at googlemail dot com Summary: PDO_MYSQL constructor, PHP warning w/ Exception error mode Status: Assigned Type: Bug Package: PDO MySQL Operating System: Linux PHP Version: 5.3.3 Assigned To: kalle Block user comment: N Private report: N New Comment: In php 5.3.23 this did not happen upon disconnects and such, eventough we never set the mode, now though in PHP 5.6.3 it does happen even if we change the modes, with the following simple code. $sHostName = ""; $sUserName = ""; $sPassword = ""; $sDefaultDb = ""; $sTestQuery = " SELECT NOW()"; $iPort = 3306; $oDb = new PDO( 'mysql:host='.$sHostName.';port=' . $iPort, $sUserName, $sPassword ); $oDb->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); var_dump($oDb->getAttribute(PDO::ATTR_ERRMODE) === PDO::ERRMODE_EXCEPTION); $sQuery = "SET WAIT_TIMEOUT = 1"; $oResult = $oDb->prepare( $sQuery ); $oResult->execute(); $sQuery = "use " . $sDefaultDb; $oResult = $oDb->prepare( $sQuery ); $oResult->execute(); sleep(3); $oResult = $oDb->prepare( $sTestQuery ); $oResult->execute(); while ($aRow = $oResult->fetch( PDO::FETCH_ASSOC )) { var_dump($aRow); } I get the following warnings: Warning: PDOStatement::execute(): MySQL server has gone away in pdotest.php on line 31 Warning: PDOStatement::execute(): Error reading result set's header in pdotest.php on line 31 And then the expected exception Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in pdotest.php on line 31 Same goes for silent mode, so whats the point of these modes then ;) Previous Comments: ------------------------------------------------------------------------ [2012-06-24 10:15:44] pineain at gmail dot com Same problem on Windows 7 x64 ------------------------------------------------------------------------ [2012-05-15 11:37:54] jach at wayf dot dk Same error on OSX version 3.5.10 ------------------------------------------------------------------------ [2010-12-22 17:19:46] alexc223 at googlemail dot com Maybe there needs to be a way for it to know? Either way, it's highly annoying since there is very little ways to handle it. ------------------------------------------------------------------------ [2010-11-02 22:12:57] felipe@php.net The warning come from mysqlnd_connect() call that nothing knows about such PDO feature... ------------------------------------------------------------------------ [2010-10-27 17:17:23] alexc223 at googlemail dot com Description: ------------ A PHP warning is generated even though I've explicitly set the PDO error mode to use exceptions. This warning occurs when the MySQL socket does not exist (for example, if MySQL is not yet started). This makes it quite impossible to handle. Test script: --------------- <?php try { $pdo = new Pdo( 'mysql:host=localhost;dbname=test', 'user', 'pass', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION) ); } catch ( PDOException $e ) { echo 'unable to connect'; } ?> Expected result: ---------------- unable to connect Actual result: -------------- Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/run/mysqld/mysqld.sock) in php shell code on line 2 unable to connect ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=53185&edit=1

« previous php.bugs (#189068) next »