Spec-Zone .ru
спецификации, руководства, описания, API

10.1.6. Набор символов для сообщений об ошибках

Этот раздел описывает, как сервер использует наборы символов для того, чтобы создать сообщения об ошибках и возвратить их клиентам. Для получения информации о языке сообщений об ошибках (а не набор символов), см. Раздел 10.2, "Устанавливая сообщение об ошибке Язык".

В MySQL 5.6 сервер создает сообщения об ошибках, используя UTF-8 и возвращает их клиентам в наборе символов, определенном character_set_results системная переменная.

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

Чтобы возвратить сообщение клиенту после того, как это было создано, сервер преобразовывает это от UTF-8 до набора символов, определенного character_set_results системная переменная. Если character_set_results имеет значение NULL или binary, никакое преобразование не происходит. Никакое преобразование не происходит, если значение переменной utf8, также, потому что это соответствует исходный набор символов сообщения об ошибке.

Для символов, которые не могут быть представлены в character_set_results, некоторое кодирование может произойти во время преобразования. Кодирование использует значения кодовой точки Unicode:

Клиенты могут установить character_set_results управлять набором символов, в котором они получают сообщения об ошибках. Переменная может быть установлена непосредственно, или косвенно средствами такой как SET NAMES. Для получения дополнительной информации о character_set_results, см. Раздел 10.1.4, "Наборы символов соединения и Сопоставления".

Кодирование, которое происходит во время преобразования в character_set_results прежде, чем возвратить сообщения об ошибках клиентам может привести к различному контенту сообщения по сравнению с более ранними версиями (перед MySQL 5.5). Например, если ошибка происходит для попытки отбросить названную таблицу (PE БУКВЫ KATAKANA) и character_set_results набор символов такой как latin1 это не содержит тот символ, у получающегося сообщения, отправленного клиенту, есть закодированное имя таблицы:

ERROR 1051 (42S02): Unknown table '\30DA'

Перед MySQL 5.5 не кодируется имя:

ERROR 1051 (42S02): Unknown table 'ペ'