MySQL-dokumentationen är den fullständiga referensen för felkoder .
Felkoder som börjar på 1000 är serverfel . Dessa inkluderar fel som:
-
Fel:1045 SQLSTATE:28000 (
ER_ACCESS_DENIED_ERROR
)Meddelande:Åtkomst nekad för användare '%s'@'%s' (med lösenord:%s) -
Fel:1049 SQLSTATE:42000 (
ER_BAD_DB_ERROR
)Meddelande:Okänd databas '%s'
Felkoder som börjar vid 2000 är klientfel . Dessa inkluderar fel som:
-
Fel:2005 (
CR_UNKNOWN_HOST
) Meddelande:Okänd MySQL-servervärd '%s' (%d) -
Fel:2003 (
CR_CONN_HOST_ERROR
) Meddelande:Kan inte ansluta till MySQL-servern på '%s' (%d)
Jag tänker inte lista alla möjliga fel, eftersom de redan är dokumenterade, och jag vet inte vilka du behöver hantera. Till exempel är fel 2001 och 2002 specifika för UNIX-socket-anslutningar, vilket kan vara irrelevant för din målplattform.
Glöm inte att använda PDO::errorCode()
och PDO::errorInfo()
istället för bara PDOException
meddelande.
Om din kommentar om getCode()
-- Nej, det verkar inte stödjas på det sättet. Jag gjorde ett snabbtest för att var_dump()
en PDOException
. Tyvärr är dess kod enkel "0" även om felkoden och SQLSTATE ingår i undantagsmeddelandet.
Undantag::getCode()
är en del av basen Exception
klass, från och med PHP version 5.1.0. Det är upp till respektive PDO-drivrutinimplementering att använda detta objektfält. Åtminstone för MySQL-drivrutinen gjorde de det tydligen inte.