Edit report at http://bugs.php.net/bug.php?id=52414&edit=1
ID: 52414 Updated by: u...@php.net Reported by: draeli at draeli dot com Summary: warning catch by php before PDOException -Status: Assigned +Status: Feedback Type: Bug Package: PDO related Operating System: Windows XP SP3 PHP Version: 5.3.3 Assigned To: mysql Block user comment: N New Comment: I do not understand. The fatal error is standard PDO behaviour. Its because you do not catch the exception thrown by PDO. You get the very same error, for example, with SQLite: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [14] unable to open database file' in /home/nixnutz/php/php-src/branches/PHP_5_3/pdo.php:2 Stack trace: #0 /home/nixnutz/php/php-src/branches/PHP_5_3/pdo.php(2): PDO->__construct('sqlite:/opt/dat...') #1 {main} thrown in /home/nixnutz/php/php-src/branches/PHP_5_3/pdo.php on line 2 Previous Comments: ------------------------------------------------------------------------ [2010-07-23 11:29:04] draeli at draeli dot com Description: ------------ I catch all PHP error to do my own behavior error but with this case (test out of the other code), when server is down, PHP catch an error (here a Warning) and only after catch a PDOException. I think that an error because error message or same in two cases and too, if an Exception is launch, why do an PHP error ? Test script: --------------- <?php $arrDriverOption = array(); $arrDriverOption[ \PDO::MYSQL_ATTR_INIT_COMMAND ] = 'SET NAMES UTF8'; $arrDriverOption[ \PDO::ATTR_TIMEOUT ] = 2; new \PDO('mysql:host=localhost;port=3307;dbname=mydb', 'root', 'r', $arrDriverOption); Expected result: ---------------- Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu. ' in C:\Serveur\Apache2\htdocs\test\__web\index2.php:5 Stack trace: #0 C:\Serveur\Apache2\htdocs\test\__web\index2.php(5): PDO->__construct('mysql:host=loca...', 'root', 'r', Array) #1 {main} thrown in C:\Serveur\Apache2\htdocs\test\__web\index2.php on line 5 Actual result: -------------- Warning: PDO::__construct() [pdo.--construct]: [2002] Une tentative de connexion a échoué car le parti connecté n'a pa (trying to connect via tcp://localhost:3307) in C:\Serveur\Apache2\htdocs\test\__web\index2.php on line 5 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu. ' in C:\Serveur\Apache2\htdocs\test\__web\index2.php:5 Stack trace: #0 C:\Serveur\Apache2\htdocs\test\__web\index2.php(5): PDO->__construct('mysql:host=loca...', 'root', 'r', Array) #1 {main} thrown in C:\Serveur\Apache2\htdocs\test\__web\index2.php on line 5 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52414&edit=1