B.1 Источники и элементы сообщений об ошибках
В этом разделе рассматривается, как сообщения об ошибках генерируются в MySQL, и какие элементы они содержат.
Источники сообщений об ошибках
Сообщения об ошибках могут генерироваться на стороне сервера или клиента:
-
На стороне сервера сообщения об ошибках могут возникать во время процессов запуска и завершения работы, в результате проблем, возникающих при выполнении операторов SQL, и так далее.
Сервер MySQL записывает некоторые сообщения об ошибках в свой журнал ошибок. Они указывают на проблемы, представляющие интерес для администраторов баз данных или требующие их вмешательства.
Сервер отправляет другие сообщения об ошибках клиентским программам. Они указывают на проблемы, относящиеся только к конкретному клиенту. Библиотека MySQL-клиента принимает ошибки, полученные от сервера, и делает их доступными для клиентской программы-хоста.
Сообщения об ошибках на стороне клиента генерируются внутри библиотеки MySQL-клиента, обычно связанные с проблемами связи с сервером.
Примеры сообщений об ошибках на стороне сервера, записанных в журнал ошибок:
-
Это сообщение, сгенерированное во время процесса запуска, предоставляет индикатор статуса или прогресса:
2018-09-26T14:46:06.326016Z 0 [Note] Skipping generation of SSL certificates as options related to SSL are specified.
-
Это сообщение указывает на проблему, требующую вмешательства администратора базы данных:
2018-10-02T03:20:39.410387Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Пример сообщения об ошибке на стороне сервера, отправленного клиентским программам, как отображается клиентом mysql:
mysql> SELECT * FROM no_such_table;
ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist
Пример сообщения об ошибке на стороне клиента, исходящего из библиотеки клиента, как отображается клиентом mysql:
$> mysql -h no-such-host
ERROR 2005 (HY000): Unknown MySQL server host 'no-such-host' (0)
Независимо от того, исходит ли ошибка из библиотеки клиента или получена от сервера, MySQL-клиентская программа может реагировать по-разному. Как только что показано, клиент может отобразить сообщение об ошибке, чтобы пользователь мог принять корректирующие меры. Клиент может вместо этого попытаться внутренне разрешить или повторить неудачную операцию или принять другие меры.
Элементы сообщений об ошибках
При возникновении ошибки информация об ошибке включает несколько элементов: код ошибки, значение SQLSTATE и строку сообщения. Эти элементы имеют следующие характеристики:
-
Код ошибки: Это числовое значение. Оно специфично для MySQL и не переносится на другие системы баз данных.
Каждому коду ошибки соответствует символическое значение. Примеры:
Символ для номера ошибки сервера
1146это .Символ для номера ошибки клиента
2005это .
Коды ошибок стабильны в выпусках General Availability (GA) данного ряда MySQL. Перед достижением выпуском GA статуса новые коды могут всё ещё разрабатываться и могут меняться.
-
Значение SQLSTATE: Это строка из пяти символов (например,
'42S02'). Значения SQLSTATE взяты из ANSI SQL и ODBC и более стандартизированы, чем числовые коды ошибок. Первые два символа значения SQLSTATE указывают на класс ошибки:Класс =
'00'указывает на успех.Класс =
'01'указывает на предупреждение.Класс =
'02'указывает на «“не найдено.” Это важно в контексте курсоров и используется для управления тем, что происходит, когда курсор достигает конца набора данных. Это условие также возникает для операторовSELECT ... INTO, которые не извлекают ни одной строки.var_listКласс >
'02'указывает на исключение.
Для ошибок на стороне сервера не все номера ошибок MySQL имеют соответствующие значения SQLSTATE. В этих случаях используется
'HY000'(общая ошибка).Для ошибок на стороне клиента значение SQLSTATE всегда равно
'HY000'(общая ошибка), поэтому оно не имеет смысла для различения одной ошибки клиента от другой. Строка сообщения: Эта строка предоставляет текстовое описание ошибки.
© 2025 Oracle
Licensed under the GPLv2 License.