10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 本手册摘录

10.6错误消息字符集

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

用于错误消息构造的字符集

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

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

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

    • 诸如表或列名之类的标识符在内部使用UTF-8,所以它们是原样复制的。

    • 字符(非inary)字符串值从它们的字符集转换为UTF-8。

    • 二进制字符串值将像复制范围内的字节一样复制0x20.0x7e.,并使用x \在此范围之外的字节的十六进制编码。例如,如果尝试插入时出现重复键错误0x41cf9f.成一个varbinary.唯一列,生成的错误消息使用UTF-8,具有一些字节的十六进制编码:

      重复条目'a \ xcf \ x9f'用于键1

字符集错误消息处理

一旦构造,可以通过服务器写入错误日志或发送给客户端:

  • 如果服务器将错误消息写入错误日志,则它将其写入UTF-8,如图所构造,无需转换为另一个字符集。

  • 如果服务器将错误消息发送到客户端程序,则服务器将其从UTF-8转换为由指定的字符集character_set_results.系统变量。如果character_set_results.有价值二进制,不会发生转换。如果变量值是,则不会发生转换UTF8MB3.UTF8MB4.或者,因为这些字符集具有包含消息构造中使用的所有UTF-8字符的reptogreire。

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

    • 基本多语言平面(BMP)范围的字符(0x0000.0xffff.)是用的\nnnn符号。

    • BMP范围之外的字符(0x100000x10ffff.)是用的\ +nnnnnn.符号。

    客户可以设置character_set_results.控制他们接收错误消息的字符集。该变量可以直接设置,也可以通过诸如组名称。有关的更多信息character_set_results., 看第10.4节,“连接字符集和排序规则”