设置字符集错误的提示消息
本节介绍MySQL服务器如何使用字符集构造错误消息。有关错误消息的语言(而不是字符集)的信息,请参见“设置错误消息的语言”。有关配置错误日志记录的一般信息,请参见“MySQL服务器错误日志”。
- 用于错误消息构造的字符集
- 错误消息处理的字符集
设置字符集错误的提示消息
服务器构造错误消息,如下所示:
- 消息模板使用UTF-8(utf8mb3)。
- 消息模板中的参数将替换为适用于特定错误发生的值: - 表或列名之类的标识符在内部使用UTF-8,因此可以照原样复制。
- 字符(非二进制)字符串值从其字符集转换为UTF-8。
- 二进制字符串值按原样复制 - 0x20到到的范围内的字节- 0x7E,并使用- \x十六进制编码表示超出该范围的字节。例如,如果对于一个试图插入发生重复键错误- 0x41CF9F成- VARBINARY唯一的列,得到的错误消息使用UTF-8与一些字节的十六进制编码。- Duplicate entry 'A\xC3\x9F' for key 1 
 
错误消息处理
一旦构造了错误消息,服务器就可以将其写入错误日志或发送给客户端:
- 如果服务器将错误消息写入错误日志,它将按构造方式以UTF-8格式写入,而不转换为另一个字符集。
- 如果服务器将错误消息发送到客户端程序,则服务器会将错误消息从UTF-8转换为 - character_set_results系统变量指定的字符集。如果- character_set_results值为- NULL或- binary,则不进行任何转换。如果变量值为- utf8mb3或- utf8mb4,则不会进行任何转换,因为这些字符集的库包含了消息构造中使用的所有UTF-8字符。- 如果不能用表示字符 - character_set_results,则在转换过程中可能会发生一些编码。编码使用Unicode代码点值:- 基本多语言平面(BMP)范围(0x0000至0xFFFF)中的字符使用符号书写。\nnnn
- BMP范围(0x10000至0x10FFFF)之外的字符使用符号书写。\ +nnnnnn
 - 客户端可以设置 - character_set_results为控制接收错误消息的字符集。可以直接设置变量,也可以通过间接设置- SET NAMES。有关的更多信息- character_set_results,请参见“连接字符集和校验规则”。
- 基本多语言平面(BMP)范围(
