sql >> Base de Datos >  >> RDS >> Mysql

¿Posibles errores de excepción de PDO (MySQL 5)?

La documentación de MySQL es la referencia completa para códigos de error .

Los códigos de error que comienzan en 1000 son errores del servidor . Estos incluyen errores como:

  • Error:1045 SQLSTATE:28000 (ER_ACCESS_DENIED_ERROR )Mensaje:Acceso denegado para el usuario '%s'@'%s' (con contraseña:%s)

  • Error:1049 SQLSTATE:42000 (ER_BAD_DB_ERROR )Mensaje:Base de datos desconocida '%s'

Los códigos de error que comienzan en 2000 son errores de cliente . Estos incluyen errores como:

  • Error:2005 (CR_UNKNOWN_HOST ) Mensaje:host de servidor MySQL desconocido '%s' (%d)

  • Error:2003 (CR_CONN_HOST_ERROR ) Mensaje:No se puede conectar al servidor MySQL en '%s' (%d)

No voy a enumerar todos los errores posibles, porque ya están documentados y no sé cuáles debe manejar. Por ejemplo, los errores 2001 y 2002 son específicos de las conexiones de socket UNIX, lo que puede ser irrelevante para su plataforma de destino.

No olvide usar PDO::errorCode() y PDO::errorInfo() en lugar de simplemente la PDOException mensaje.

Vuelve a tu comentario sobre getCode() -- No, no parece ser compatible de esa manera. Hice una prueba rápida, para var_dump() una PDOException . Desafortunadamente, su código es simple "0" a pesar de que el código de error y SQLSTATE están incluidos en el mensaje de excepción.

Excepción::getCode() es parte de la base Exception clase, a partir de la versión de PHP 5.1.0. Depende de la implementación del controlador PDO respectivo utilizar este campo de objeto. Al menos para el controlador de MySQL, aparentemente no lo hicieron.