# 10.6 错误信息字符集

本节介绍 MySQL 服务器如何使用字符集来构造错误消息。有关错误消息的语言(而不是字符集)的信息,请参阅第 10.12 节,“设置错误消息语言”.有关配置错误日志记录的一般信息,请参阅第 5.4.2 节,“错误日志”.

# 错误消息构造的字符集

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

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

  • 消息模板中的参数被替换为适用于特定错误发生的值:

    • 标识符(例如表名或列名)在内部使用 UTF-8,因此它们按原样复制。

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

    • 二进制字符串值按原样复制范围内的字节0x200x7E, 并使用\x超出该范围的字节的十六进制编码。例如,如果尝试插入时发生重复键错误0x41CF9F成一个变量唯一列,生成的错误消息使用 UTF-8 和一些字节十六进制编码:

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

# 错误消息处理的字符集

错误消息一旦构建,就可以由服务器写入错误日志或发送给客户端:

  • 如果服务器将错误消息写入错误日志,它将按照构造以 UTF-8 写入,而不转换为另一个字符集。

  • 如果服务器将错误消息发送给客户端程序,则服务器将其从 UTF-8 转换为客户端指定的字符集字符集结果系统变量。如果字符集结果有一个值空值要么二进制,不发生转换。如果变量值为utf8mb3要么utf8mb4,或者,因为这些字符集具有包含消息构造中使用的所有 UTF-8 字符的曲目。

    如果字符不能在字符集结果,在转换过程中可能会发生一些编码。编码使用 Unicode 代码点值: