Spec-Zone.ru › MySQL 8.4

B.1 Источники и элементы сообщений об ошибках

В этом разделе рассматривается, как сообщения об ошибках генерируются в MySQL, и какие элементы они содержат.

  • Источники сообщений об ошибках

  • Элементы сообщений об ошибках

  • Диапазоны кодов ошибок

Источники сообщений об ошибках

Сообщения об ошибках могут исходить со стороны сервера или со стороны клиента:

  • Со стороны сервера сообщения об ошибках могут возникать во время процессов запуска и завершения работы, в результате проблем, возникающих при выполнении SQL-запросов, и так далее.

    • Сервер MySQL записывает некоторые сообщения об ошибках в свой журнал ошибок. Они указывают на проблемы, представляющие интерес для администраторов базы данных, или требующие их вмешательства.

    • Сервер отправляет другие сообщения об ошибках клиентским программам. Они указывают на проблемы, относящиеся только к конкретному клиенту. Библиотека MySQL-клиента обрабатывает ошибки, полученные от сервера, и делает их доступными для программы-клиента хоста.

  • Сообщения об ошибках со стороны клиента генерируются внутри библиотеки MySQL-клиента, обычно связанные с проблемами связи с сервером.

Примеры сообщений об ошибках со стороны сервера, записанные в журнал ошибок:

  • Это сообщение, сгенерированное во время процесса запуска, предоставляет индикатор состояния или прогресса:

    2018-10-28T13:01:32.735983Z 0 [Note] [MY-010303] [Server] Skipping
    generation of SSL certificates as options related to SSL are specified.
    
  • Это сообщение указывает на проблему, требующую вмешательства DBA:

    2018-10-02T03:20:39.410387Z 768 [ERROR] [MY-010045] [Server] Event Scheduler:
    [evtuser@localhost][myschema.e_daily] Unknown database 'mydb'
    

Пример сообщения об ошибке со стороны сервера, отправленного клиентским программам, как отображается клиентом 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' (-2)

Независимо от того, исходит ли ошибка из библиотеки клиента или получена от сервера, программа MySQL-клиента может реагировать различными способами. Как только что показано, клиент может отобразить сообщение об ошибке, чтобы пользователь мог предпринять корректирующие действия. Клиент может вместо этого попытаться внутренне разрешить или повторить неудачную операцию или предпринять другие действия.

Элементы сообщений об ошибках

При возникновении ошибки информация об ошибке включает несколько элементов: код ошибки, значение SQLSTATE и строку сообщения. Эти элементы обладают следующими характеристиками:

  • Код ошибки: Это числовое значение. Оно специфично для MySQL и не переносимо в другие системы баз данных.

    Каждому номеру ошибки соответствует символьное значение. Примеры:

    • Символ для номера ошибки сервера 1146 равен .

    • Символ для номера ошибки клиента 2005 равен .

    Набор кодов ошибок, используемых в сообщениях об ошибках, разделен на отдельные диапазоны; см. Диапазоны кодов ошибок.

    Коды ошибок стабильны в выпусках MySQL серии General Availability (GA). До достижения статуса GA новая серия может все еще разрабатываться и подвергаться изменениям.

  • Значение SQLSTATE: Это строка длиной пять символов (например, '42S02'). Значения SQLSTATE взяты из ANSI SQL и ODBC и более стандартизированы, чем числовые коды ошибок. Первые два символа значения SQLSTATE указывают класс ошибки:

    • Класс = '00' указывает на успех.

    • Класс = '01' указывает на предупреждение.

    • Класс = '02' указывает «“не найдено.”. Это актуально в контексте курсоров и используется для управления тем, что происходит, когда курсор достигает конца набора данных. Это условие также возникает для SELECT ... INTO var_list операторов, которые не извлекают ни одной строки.

    • Класс > '02' указывает на исключение.

    Для ошибок сервера не все номера ошибок MySQL имеют соответствующие значения SQLSTATE. В таких случаях используется 'HY000' (ошибка общего характера).

    Для ошибок клиента значение SQLSTATE всегда равно 'HY000' (ошибка общего характера), поэтому оно не имеет значения для различения одной ошибки клиента от другой.

  • Строка сообщения: Эта строка предоставляет текстовое описание ошибки.

Диапазоны кодов ошибок

Набор кодов ошибок, используемых в сообщениях об ошибках, разделен на отдельные диапазоны, каждый со своим назначением:

  • 1 до 999: Глобальные коды ошибок. Этот диапазон кодов ошибок называется «глобальным», потому что это общий диапазон, который используется сервером и клиентами.

    Когда ошибка в этом диапазоне исходит от сервера, сервер записывает ее в журнал ошибок, дополняя код ошибки ведущими нулями до шести цифр и добавляя префикс MY-.

    Когда ошибка в этом диапазоне исходит от клиента, клиентская библиотека делает ее доступной программе-клиенту без нулевого заполнения или префикса.

  • 1000 до 1999: Коды ошибок сервера, зарезервированные для сообщений, отправляемых клиентам.

  • 2000 до 2999: Коды ошибок клиента, зарезервированные для использования клиентской библиотекой.

  • 3000 до 4999: Коды ошибок сервера, зарезервированные для сообщений, отправляемых клиентам.

  • 5000 до 5999: Коды ошибок, зарезервированные для использования X Plugin для сообщений, отправляемых клиентам.

  • 10000 до 49999: Коды ошибок сервера, зарезервированные для сообщений, которые должны быть записаны в журнал ошибок (не отправляются клиентам).

    Когда возникает ошибка в этом диапазоне, сервер записывает ее в журнал ошибок, дополняя код ошибки ведущими нулями до шести цифр и добавляя префикс MY-.

  • 50000 до 51999: Коды ошибок, зарезервированные для использования третьими сторонами.

Сервер обрабатывает сообщения об ошибках, записанные в журнал ошибок, по-другому, чем сообщения об ошибках, отправленные клиентам:

  • Когда сервер записывает сообщение в журнал ошибок, он дополняет код ошибки ведущими нулями до шести цифр и добавляет префикс MY- (примеры: , ).

  • Когда сервер отправляет сообщение программе-клиенту, он не добавляет нулевого заполнения или префикса к коду ошибки (примеры: , ).

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/error-message-elements.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API