Возможные ошибки PDOException (MySQL 5)?

Вы создаете новый CarListGrabber с помощью:

CarListGrabber grabber = new CarListGrabber();

он не будет делать инъекции, которые вам нужно вводить, также ваши grabber, например:

@Autowired
CarListGrabber grabber;
9
задан j0k 3 September 2012 в 21:13
поделиться

2 ответа

The MySQL documentation is the complete reference for error codes.

Error codes starting at 1000 are server errors. These include errors like:

  • Error: 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 включены в сообщение об исключении.

Exception :: getCode () является частью базового класса Exception , так как PHP версии 5.1.0. Это зависит от реализации соответствующего драйвера PDO, чтобы использовать это поле объекта. По крайней мере, для драйвера MySQL они, очевидно, не сделали.

с версии PHP 5.1.0. Это зависит от реализации соответствующего драйвера PDO, чтобы использовать это поле объекта. По крайней мере, для драйвера MySQL они, очевидно, не сделали.

с версии PHP 5.1.0. Это зависит от реализации соответствующего драйвера PDO, чтобы использовать это поле объекта. По крайней мере, для драйвера MySQL они, очевидно, не сделали.

15
ответ дан 4 December 2019 в 23:41
поделиться

Я не уверен насчет PDO, но вы можете использовать функцию mysql_error () , которая возвращает что-то вроде этого:

  • Доступ запрещен для пользователя youruser @ yourserver
  • Невозможно выбрать базу данных
  • ... и т. д.

Вы можете затем отобразить эти ошибки непосредственно в пользователь, или поиграйте, чтобы получить список всех возможных ошибок и непосредственно определить причину ошибки.

-9
ответ дан 4 December 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: