B.2 Интерфейсы информации об ошибках
Сообщения об ошибках могут исходить как со стороны сервера, так и со стороны клиента, и каждое сообщение об ошибке включает код ошибки, значение SQLSTATE и строку сообщения, как описано в разделе B.1 «Источники и элементы сообщений об ошибках». Список ошибок сервера, клиента и глобальных (общих для сервера и клиентов) ошибок см. в .
Для проверки ошибок внутри программ используйте номера или символы кодов ошибок, а не строки сообщений об ошибках. Строки сообщений не часто меняются, но это возможно. Кроме того, если администратор базы данных изменит языковые настройки, это повлияет на язык строк сообщений; см. раздел 10.12 «Настройка языка сообщений об ошибках».
Информация об ошибках в MySQL доступна в журнале ошибок сервера, на уровне SQL, внутри клиентских программ и в командной строке.
Журнал ошибок
На стороне сервера некоторые сообщения предназначены для журнала ошибок. Сведения о настройке места и способа записи лога сервером см. в разделе 5.4.2 «Журнал ошибок».
Другие сообщения об ошибках сервера предназначены для отправки клиентским программам и доступны, как описано в интерфейсе сообщений об ошибках клиента.
Интерфейс сообщений об ошибках SQL
На уровне SQL существует несколько источников информации об ошибках в MySQL:
Информация о предупреждениях и ошибках SQL-запросов доступна через операторы
SHOW WARNINGSиSHOW ERRORS. Переменная системыwarning_countуказывает количество ошибок, предупреждений и заметок (с исключением заметок, если переменная системыsql_notesотключена). Переменная системыerror_countуказывает количество ошибок. Ее значение не включает предупреждения и заметки.Оператор
GET DIAGNOSTICSможет использоваться для проверки диагностической информации в области диагностики. См. раздел 13.6.7.3 «Оператор GET DIAGNOSTICS».Вывод оператора
SHOW SLAVE STATUSвключает информацию о реплицированных ошибках, возникающих на серверах репликации.Вывод оператора
SHOW ENGINE INNODB STATUSсодержит информацию о последней ошибке внешнего ключа, если операторCREATE TABLEдля таблицыInnoDBзавершается ошибкой.
Интерфейс сообщений об ошибках клиента
Клиентские программы получают ошибки из двух источников:
Ошибки, возникающие на стороне клиента внутри библиотеки MySQL клиента.
Ошибки, возникающие на стороне сервера и отправляемые клиенту сервером. Эти ошибки обрабатываются внутри библиотеки клиента, что делает их доступными для программы-клиента-хоста.
Независимо от того, возникла ли ошибка внутри библиотеки клиента или была получена от сервера, программа MySQL-клиента получает код ошибки, значение SQLSTATE, строку сообщения и другую связанную информацию, вызывая функции API C в библиотеке клиента:
возвращает код ошибки MySQL.
возвращает значение SQLSTATE.
возвращает строку сообщения.
, , и — соответствующие функции ошибок для подготовленных запросов.
возвращает количество ошибок, предупреждений и заметок для последнего запроса.
Описания функций ошибок библиотеки клиента см. в .
Программа MySQL-клиента может реагировать на ошибку различными способами. Клиент может отобразить сообщение об ошибке, чтобы пользователь мог принять корректирующие меры, внутренне попытаться разрешить или повторить неудачную операцию или предпринять другие действия. Например, (используя клиент mysql) ошибка подключения к серверу может привести к следующему сообщению:
$> mysql -h no-such-host
ERROR 2005 (HY000): Unknown MySQL server host 'no-such-host' (0)
Интерфейс сообщений об ошибках командной строки
Программа perror предоставляет информацию из командной строки о номерах ошибок. См. раздел 4.8.2 «perror — Отображение информации о сообщениях об ошибках MySQL».
$> perror 1231
MySQL error code 1231 (ER_WRONG_VALUE_FOR_VAR): Variable '%-.64s' can't
be set to the value of '%-.200s'
Для ошибок MySQL NDB Cluster используйте ndb_perror. См. раздел 21.5.17 «ndb_perror — Получение информации о сообщениях об ошибках NDB».
$> ndb_perror 323
NDB error code 323: Invalid nodegroup id, nodegroup already existing:
Permanent error: Application error
© 2025 Oracle
Licensed under the GPLv2 License.