De MySQL-documentatie is de volledige referentie voor foutcodes .
Foutcodes die beginnen bij 1000 zijn serverfouten . Deze omvatten fouten zoals:
-
Fout:1045 SQLSTATE:28000 (
ER_ACCESS_DENIED_ERROR
)Bericht:Toegang geweigerd voor gebruiker '%s'@'%s' (met wachtwoord:%s) -
Fout:1049 SQLSTATE:42000 (
ER_BAD_DB_ERROR
)Bericht:Onbekende database '%s'
Foutcodes die beginnen bij 2000 zijn clientfouten . Deze omvatten fouten zoals:
-
Fout:2005 (
CR_UNKNOWN_HOST
) Bericht:Onbekende MySQL-serverhost '%s' (%d) -
Fout:2003 (
CR_CONN_HOST_ERROR
) Bericht:kan geen verbinding maken met MySQL-server op '%s' (%d)
Ik ga niet alle mogelijke fouten opsommen, omdat ze al gedocumenteerd zijn en ik niet weet welke je moet oplossen. Fouten 2001 en 2002 zijn bijvoorbeeld specifiek voor UNIX-socketverbindingen, die mogelijk niet relevant zijn voor uw doelplatform.
Vergeet niet PDO::errorCode()
te gebruiken
en PDO::errorInfo()
in plaats van gewoon de PDOException
bericht.
Opnieuw uw opmerking over getCode()
-- Nee, het lijkt niet op die manier te worden ondersteund. Ik heb een snelle test gedaan om var_dump()
een PDOException
. Helaas is de code eenvoudig "0", hoewel de foutcode en SQLSTATE zijn opgenomen in het uitzonderingsbericht.
Uitzondering::getCode()
maakt deel uit van de basis Exception
class, vanaf PHP-versie 5.1.0. Het is aan de respectievelijke implementatie van het PDO-stuurprogramma om dit objectveld te gebruiken. In ieder geval voor de MySQL-driver deden ze dat blijkbaar niet.