1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql报错ERROR 1366(HY000)

mysql报错ERROR 1366(HY000)

时间:2023-10-13 22:03:57

相关推荐

mysql报错ERROR 1366(HY000)

环境

mysql5.7 + CentOS release 6.5 (Final)

操作

执行 source /data/sql/one_player_data.sql

现象

1、执行source XXX.sql命令后会报错,错误如下:

ERROR 1366 (HY000) at line 1 in file: '/data/sql/one_player_data.sql': Incorrect string value: '\xF0\x9F\x97\xBF' for column 'des' at row 1

2、通过本地 navicat 单独执行sql语句不会报错。

分析

1、通过 file -i 确认过sql文件的编码格式为: utf-8

2、通过进入mysql后台( mysql -u root -p ), 进入后执行 SHOW VARIABLES LIKE 'character%';

3、同时查看成功案例,navicat中设置的表结构参数

4、再结合数据源本身为Emoji表情可知,字段转储失败的原因为特殊字符的字节数有差异。Mysql的utf8编码最多是3个字节,而Emoji表情或特殊字节是4个字节,所以会出现插入失败的情况,同时提示 Incorrect string value

针对 utf8mb4进行说明

Mysql5.5.3版本之后新增了utf8mb4编码,mb4 = most bytes,其就是专门用来兼容四个字节的unicode,utf8mb4就是utf8的超集。

结论:

1、通过查看表结构编码,以及直接insert语句的正确性可知,表结构无问题;

2、通过file -i查看sql文件编码格式(utf-8),sql文件无问题;

3、通过查看mysql字符集配置及数据源本身为emoji表情,可以定位为字符集配置问题;

解决方案:

去往mysql服务器上 修改对应mysql的配置参数

a) 进入mysql安装目录,vim对应配置文件(myini 或f)

b) 添加或修改对应配置

character_set_server=utf8mb4

collation-server = utf8mb4_unicode_ci

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

c) 配置修改完成后,重启mysql,并再次查看mysql字符集

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。