La documentation MySQL est la référence complète pour les codes d'erreur .
Les codes d'erreur commençant à 1000 sont des erreurs de serveur . Celles-ci incluent des erreurs telles que :
-
Erreur :1045 SQLSTATE :28000 (
ER_ACCESS_DENIED_ERROR
)Message :Accès refusé pour l'utilisateur '%s'@'%s' (utilisant le mot de passe : %s) -
Erreur :1049 SQLSTATE :42000 (
ER_BAD_DB_ERROR
)Message :Base de données inconnue '%s'
Les codes d'erreur commençant à 2000 sont erreurs client . Celles-ci incluent des erreurs telles que :
-
Erreur :2005 (
CR_UNKNOWN_HOST
) Message :Hôte de serveur MySQL inconnu '%s' (%d) -
Erreur :2003 (
CR_CONN_HOST_ERROR
) Message :Impossible de se connecter au serveur MySQL sur '%s' (%d)
Je ne vais pas énumérer toutes les erreurs possibles, car elles sont déjà documentées et je ne sais pas lesquelles vous devez gérer. Par exemple, les erreurs 2001 et 2002 sont spécifiques aux connexions de socket UNIX, qui peuvent ne pas être pertinentes pour votre plate-forme cible.
N'oubliez pas d'utiliser PDO::errorCode()
et PDO::errorInfo()
au lieu de simplement le PDOException
message.
Re votre commentaire sur getCode()
-- Non, il ne semble pas être pris en charge de cette façon. J'ai fait un test rapide, à var_dump()
une PDOException
. Malheureusement, son code est simple "0" même si le code d'erreur et SQLSTATE sont inclus dans le message d'exception.
Exception ::getCode()
fait partie de la base Exception
classe, à partir de la version PHP 5.1.0. Il appartient à l'implémentation du pilote PDO respectif d'utiliser ce champ d'objet. Au moins pour le pilote MySQL, ils ne l'ont apparemment pas fait.