Die MySQL-Dokumentation ist die vollständige Referenz für Fehlercodes .
Fehlercodes, die bei 1000 beginnen, sind Serverfehler . Dazu gehören Fehler wie:
-
Fehler:1045 SQLSTATE:28000 (
ER_ACCESS_DENIED_ERROR
)Meldung:Zugriff verweigert für Benutzer '%s'@'%s' (mit Passwort:%s) -
Fehler:1049 SQLSTATE:42000 (
ER_BAD_DB_ERROR
)Meldung:Unbekannte Datenbank '%s'
Fehlercodes ab 2000 sind Client-Fehler . Dazu gehören Fehler wie:
-
Fehler:2005 (
CR_UNKNOWN_HOST
) Meldung:Unbekannter MySQL-Server-Host '%s' (%d) -
Fehler:2003 (
CR_CONN_HOST_ERROR
) Meldung:Verbindung zum MySQL-Server auf '%s' (%d) nicht möglich
Ich werde nicht alle möglichen Fehler auflisten, da sie bereits dokumentiert sind und ich nicht weiß, welche Sie behandeln müssen. Beispielsweise sind die Fehler 2001 und 2002 spezifisch für UNIX-Socket-Verbindungen, die für Ihre Zielplattform möglicherweise irrelevant sind.
Vergessen Sie nicht, PDO::errorCode()
zu verwenden
und PDO::errorInfo()
statt einfach die PDOException
Nachricht.
Wiederholen Sie Ihren Kommentar zu getCode()
-- Nein, es scheint nicht so unterstützt zu werden. Ich habe einen schnellen Test mit var_dump()
durchgeführt eine PDOException
. Leider ist sein Code einfach "0", obwohl der Fehlercode und SQLSTATE in der Ausnahmemeldung enthalten sind.
Exception::getCode()
ist Teil der Basis Exception
Klasse, ab PHP-Version 5.1.0. Es ist Sache der jeweiligen PDO-Treiberimplementierung, dieses Objektfeld zu verwenden. Zumindest für den MySQL-Treiber offenbar nicht.