MySQL Error number: MY-013242; Symbol: ER_WARN_DEPRECATED_UTF8_ALIAS_OPTION; SQLSTATE: HY000

文档解释

Error number: MY-013242; Symbol: ER_WARN_DEPRECATED_UTF8_ALIAS_OPTION; SQLSTATE: HY000

Message: %s: ‘utf8’ is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.

MY-013242 对应的错误信息是 ER_WARN_DEPRECATED_UTF8_ALIAS_OPTION,该错误的SQLSTATE是 HY000。

错误说明

MY-013242 错误提示用户,MySQL从5.5.3版本开始不推荐使用UTF-8或UTF8等字符集的别名,因为这些别名并不符合官方文档的说明,并且可能导致未来的版本出现不兼容性问题。

MySQL官方建议,用户在建立表格、索引或变量是,使用utf8mb4字符集,使用utf8mb4_unicode_520_ci作为排序规则。

常见案例

当用户在MySQL 5.5.3版本之后试图用以下字符集创建数据表或变量时会出现此错误:

UTF-8 :

CREATE TABLE some_table (data VARCHAR(50) CHARACTER SET UTF-8);

UTF8 :

CREATE TABLE some_table (data VARCHAR(50) CHARACTER SET UTF8);

解决方法

用户需要更改创建表格或变量时指定的字符集,用utf8mb4替换UTF-8或UTF8。

正确使用如下:

CREATE TABLE some_table (data VARCHAR(50) CHARACTER SET utf8mb4);

此外,用户也可以在MySQL配置文件中定义字符集别名:

[mysqld]

character-set-server=utf8mb4

如果用户希望自行定义别名,可以在MySQL配置文件里添加以下内容:

[mysqld]

character_set_server=utf8mb4

character-set-filesystem=utf8mb4

collation_server=utf8mb4_unicode_ci

这些内容的添加可以避免用户出现ER_WARN_DEPRECATED_UTF8_ALIAS_OPTION的错误信息。

你可能感兴趣的