Документация MySQL является полным справочником для кодов ошибок .
Коды ошибок, начинающиеся с 1000: ошибки сервера . К ним относятся ошибки, такие как:
Ошибка: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR
)
Сообщение: доступ запрещен для пользователя "% s" @ "% s" (используется пароль:% s)
Ошибка: 1049 SQLSTATE: 42000 (ER_BAD_DB_ERROR
)
Сообщение: неизвестная база данных "% s"
Коды ошибок, начинающиеся с 2000: ошибки клиента . К ним относятся ошибки, такие как:
Я не собираюсь перечислять все возможные ошибки, потому что они уже задокументированы, и я не знаю, какие из них вам нужно устранить. Например, ошибки 2001 и 2002 характерны для соединений сокетов UNIX, которые могут не иметь отношения к вашей целевой платформе.
Не забудьте использовать PDO::errorCode()
и PDO::errorInfo()
вместо простого сообщения PDOException
.
Re Ваш комментарий о getCode()
- Нет, похоже, это не поддерживается таким образом. Я сделал быстрый тест, чтобы var_dump()
a PDOException
. К сожалению, его код прост: «0», хотя код ошибки и SQLSTATE включены в сообщение об исключении.
Exception :: getCode () является частью базового Exception
класса, начиная с PHP версии 5.1.0. Это зависит от реализации соответствующего драйвера PDO, чтобы использовать это поле объекта. По крайней мере, для драйвера MySQL они, очевидно, не сделали.