• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 设置字符集错误的提示消息

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

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

    设置字符集错误的提示消息

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

    • 消息模板使用UTF-8(utf8mb3)。
    • 消息模板中的参数将替换为适用于特定错误发生的值:

      • 表或列名之类的标识符在内部使用UTF-8,因此可以照原样复制。
      • 字符(非二进制)字符串值从其字符集转换为UTF-8。
      • 二进制字符串值按原样复制0x20到到的范围内的字节0x7E,并使用\x十六进制编码表示超出该范围的字节。例如,如果对于一个试图插入发生重复键错误0x41CF9FVARBINARY唯一的列,得到的错误消息使用UTF-8与一些字节的十六进制编码。

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

    错误消息处理

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

    • 如果服务器将错误消息写入错误日志,它将按构造方式以UTF-8格式写入,而不转换为另一个字符集。
    • 如果服务器将错误消息发送到客户端程序,则服务器会将错误消息从UTF-8转换为character_set_results系统变量指定的字符集。如果character_set_results值为NULLbinary,则不进行任何转换。如果变量值为utf8mb3utf8mb4,则不会进行任何转换,因为这些字符集的库包含了消息构造中使用的所有UTF-8字符。

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

      • 基本多语言平面(BMP)范围(0x00000xFFFF)中的字符使用符号书写。\nnnn
      • BMP范围(0x100000x10FFFF)之外的字符使用符号书写。\ +nnnnnn

      客户端可以设置character_set_results为控制接收错误消息的字符集。可以直接设置变量,也可以通过间接设置SET NAMES。有关的更多信息character_set_results,请参见“连接字符集和校验规则”。