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的错误信息。