mysql5.7插入unicode编码字符报错解决方案

3 阅读1分钟

MySQL报错Incorrect string value: ‘\xF0\x9F\x90\xA0 \xD0…‘ for column ‘XXX‘ at row 1“

这个问题,原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

解决方案

1.找到你的mysql安装目录

windows系统就找到my.ini

linux系统就找到my.cf

打开然后在里面加入或者修改,把字符集改成utf8mb4

[client] 
default-character-set = utf8mb4 

[mysqld] 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci

[mysql] 
default-character-set = utf8mb4

2.如果你的数据库是之前建好的要修改编码

更改数据库编码:(将your_database_name 替换成你的库名)

ALTER DATABASE your_database_name  
CHARACTER SET = utf8mb4  
COLLATE = utf8mb4_unicode_ci;  

更新表字符集和排序规则: (将your_table_name 替换成你的表名)

ALTER TABLE your_table_name  
CONVERT TO CHARACTER SET utf8mb4  
COLLATE utf8mb4_unicode_ci;  

更改列字符集和排序规则:
(将your_table_name 替换成你的表名)
(将your_column_name 替换成你的字段名)

ALTER TABLE your_table_name  
CHANGE your_column_name your_column_name  
VARCHAR(255) /* 换成自己字段的数据类型 */  
CHARACTER SET utf8mb4  
COLLATE utf8mb4_unicode_ci;  

3.重启mysql服务即可

如果使用navicat,建议换个数据库工具再试试