Mysql写入数据错误:General error: 1366 Incorrect string value: '\\xF0\\x9F\\x90\\xAE\\xE5\\xB9...' for column 'remark' at row 1"

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

我这边是在linux服务器,Mysql的版本是5.7。解决此问题需要修改Mysql的配置文件my.cnf。

 总结修改配置:

[client] 
default-character-set = utf8mb4 
[mysql] 
default-character-set = utf8mb4 
[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect='SET NAMES utf8mb4'

然后把数据库和数据表设置编码

ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin;(将TABLE_NAME替换成你的表名)

修改完成之后,重启Mysql数据库。

posted @ 2024-08-12 18:29  温柔的风  阅读(120)  评论(2编辑  收藏  举报