MySQL-dokumentationen er den komplette reference til fejlkoder .
Fejlkoder, der starter ved 1000, er serverfejl . Disse omfatter fejl som:
-
Fejl:1045 SQLSTATE:28000 (
ER_ACCESS_DENIED_ERROR
)Besked:Adgang nægtet for bruger '%s'@'%s' (ved hjælp af adgangskode:%s) -
Fejl:1049 SQLSTATE:42000 (
ER_BAD_DB_ERROR
)Meddelelse:Ukendt database '%s'
Fejlkoder, der starter ved 2000, er klientfejl . Disse omfatter fejl som:
-
Fejl:2005 (
CR_UNKNOWN_HOST
) Meddelelse:Ukendt MySQL-servervært '%s' (%d) -
Fejl:2003 (
CR_CONN_HOST_ERROR
) Meddelelse:Kan ikke oprette forbindelse til MySQL-serveren på '%s' (%d)
Jeg vil ikke opremse alle mulige fejl, for de er allerede dokumenteret, og jeg ved ikke, hvilke du skal håndtere. For eksempel er fejl 2001 og 2002 specifikke for UNIX-socketforbindelser, hvilket kan være irrelevant for din målplatform.
Glem ikke at bruge PDO::errorCode()
og PDO::errorInfo()
i stedet for blot PDOException
besked.
Re din kommentar om getCode()
-- Nej, det ser ikke ud til at være understøttet på den måde. Jeg lavede en hurtig test til var_dump()
en PDOException
. Desværre er dens kode simpel "0", selvom fejlkoden og SQLSTATE er inkluderet i undtagelsesmeddelelsen.
Exception::getCode()
er en del af basis Exception
klasse, fra og med PHP version 5.1.0. Det er op til den respektive PDO-driverimplementering at bruge dette objektfelt. I det mindste for MySQL-driveren gjorde de det tilsyneladende ikke.