Bug #74401 [Fbk->Opn]: PDO trigger warning already set throw exception
Edit report at https://bugs.php.net/bug.php?id=74401&edit=1
ID: 74401
User updated by: lusc at jiedaibao dot com
Reported by: lusc at jiedaibao dot com
Summary: PDO trigger warning already set throw exception
-Status: Feedback
+Status: Open
Type: Bug
Package: PDO MySQL
Operating System: Centos6.x
PHP Version: 7.0.17
Block user comment: N
Private report: N
New Comment:
example:
```
error_reporting(E_ALL);
ini_set('display_errors', 'on');
try {
$pdo = new PDO('mysql:dbname=qiye;host=100.73.13.5;charset=utf8', 'myroot',
'Hsql1234');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt1 = $pdo->prepare('SELECT * FROM auth limit 1');
$stmt1->execute();
var_dump($stmt1->fetchAll());
sleep('30'); // stop the mysql server at this time
$stmt1 = $pdo->prepare('SELECT * FROM jdb_company_info limit 1');
$stmt1->execute();
var_dump($stmt1->fetchAll());
} catch (Throwable $e) {
var_dump($e->__toString());
}
```
output:
```
array(0) {
}
Warning: PDOStatement::execute(): MySQL server has gone away in
/mnt/g/workspace/workspace/qiye/tests/web/test.php on line 21
Warning: PDOStatement::execute(): Error reading result set's header in
/mnt/g/workspace/workspace/qiye/tests/web/test.php on line 21
string(240) "PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away in
/mnt/g/workspace/workspace/qiye/tests/web/test.php:21
Stack trace:
#0 /mnt/g/workspace/workspace/qiye/tests/web/test.php(21): PDOStatement->execute()
#1 {main}"
```
Previous Comments:
------------------------------------------------------------------------
[2017-04-10 09:56:47] danack@php.net
Forgot to update the status to feedback. Also, the reason I'm asking for an example is that the
code for generating warning or exceptions looks really quite unlikely to do both.
https://github.com/php/php-src/blob/528468579b002ff17e3c38d9330da67749fd85ec/ext/pdo/pdo_dbh.c#L149-L165
------------------------------------------------------------------------
[2017-04-10 09:52:57] danack@php.net
Please can you provide a simple test script that shows this.
------------------------------------------------------------------------
[2017-04-10 09:39:24] lusc at jiedaibao dot com
Description:
------------
PDOStatement::execute trigger an error when lost connection. I have already set
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
bug an Warning error is trigger , like:
Warning: PDOStatement::execute: MySQL server has gone away in ...
Expected result:
----------------
just throw exception
Actual result:
--------------
warning and exception all trigger
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74401&edit=1
Thread (8 messages)