Bug #53185 [Com]: PDO_MYSQL constructor, PHP warning w/ Exception error mode
| From: | s dot adrichem at daisycon dot com | 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