Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  Character Sets, Collations, Unicode  /  Error Message Character Set

12.6 错误消息字符集

本节描述了 MySQL 服务器在构建错误消息时使用的字符集。关于错误消息语言(而不是字符集),请参阅第12.12节,“设置错误消息语言”。关于配置错误日志的总体信息,见第7.4.2节,“错误日志”.

服务器构建错误消息如下:

  • 消息模板使用 UTF-8 (utf8mb3).

  • 消息模板中的参数被替换为特定错误事件的值:

    • 标识符,如表或列名,内部使用 UTF-8,所以它们不变。

    • 字符(非二进制)字符串值从其字符集转换到 UTF-8。

    • 二进制字符串值将以字节的形式复制,范围在 0x200x7E 之间,使用 \x 十六进制编码外部范围。例如,如果对一个VARBINARY 唯一列进行插入 0x41CF9F,出现重复键错误,结果的错误信息将使用 UTF-8,以某些字节十六进制编码:

      Duplicate entry 'A\xCF\x9F' for key 1

服务器构建的错误信息可以写入错误日志或发送给客户端:

  • 如果服务器将错误信息写入错误日志,它将以构建后的 UTF-8 形式写入,而不进行另一个字符集转换。

  • 如果服务器将错误信息发送给客户端程序,服务器将其从 UTF-8 转换到由character_set_results 系统变量指定的字符集。如果character_set_results 变量值为 NULLbinary,则不进行转换。无论变量值是 utf8mb3utf8mb4,因为这两个字符集都包含在消息构建中使用的 UTF-8 字符。

    如果character_set_results 中不能表示某些字符,则可能会在转换过程中进行编码。编码使用 Unicode 字符点值:

    • 基本多语言平面(BMP)范围内的字符(0x00000xFFFF)使用 \<em class="replaceable"><code>nnnn</code></em> notation 写入。

    • BMP 范围外的字符(0x100000x10FFFF)使用 \+<code>nnnnnn</code></em> notation 写入。

    客户端可以将character_set_results 设置为控制接收错误信息的字符集。该变量可以直接设置,也可以通过如SET NAMES 等方式间接设置。关于character_set_results 的更多信息,请参见第12.4节,“连接字符集和排序规则”