Документацията на MySQL е пълната справка за кодове за грешки .
Кодовете за грешки, започващи от 1000, са сървърни грешки . Те включват грешки като:
-
Грешка:1045 SQLSTATE:28000 (
ER_ACCESS_DENIED_ERROR
)Съобщение:Достъпът е отказан за потребител '%s'@'%s' (използвайки парола:%s) -
Грешка:1049 SQLSTATE:42000 (
ER_BAD_DB_ERROR
)Съобщение:Неизвестна база данни '%s'
Кодовете за грешки, започващи от 2000, са клиентски грешки . Те включват грешки като:
-
Грешка:2005 (
CR_UNKNOWN_HOST
) Съобщение:Неизвестен хост на MySQL сървър '%s' (%d) -
Грешка:2003 (
CR_CONN_HOST_ERROR
) Съобщение:Не мога да се свържа с MySQL сървър на „%s“ (%d)
Няма да изброявам всички възможни грешки, защото те вече са документирани и не знам с кои трябва да се справите. Например грешките 2001 и 2002 са специфични за връзките на UNIX сокет, което може да не е от значение за вашата целева платформа.
Не забравяйте да използвате PDO::errorCode()
и PDO::errorInfo()
вместо просто PDOException
съобщение.
Повторете коментара си относно getCode()
-- Не, изглежда не се поддържа по този начин. Направих бърз тест за var_dump()
PDOException
. За съжаление, неговият код е прост "0", въпреки че кодът за грешка и SQLSTATE са включени в съобщението за изключение.
Изключение::getCode()
е част от базовото Exception
клас, от версия на PHP 5.1.0. От съответната реализация на PDO драйвер зависи да използва това поле на обекта. Поне за драйвера на MySQL очевидно не са го направили.