数据库
首页 > 数据库> > 带表情字符插入mysql字段报错问题处理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickNa

带表情字符插入mysql字段报错问题处理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickNa

作者:互联网

今天在处理数据的时候出现这个错误

Incorrect string value: '\xF0\xA5\x8C\x93\xE5\x85...' for column 'nickName' at row 126; nested exception is java.sql.SQLException: Incorrect string value: '\xF0\xA5\x8C\x93\xE5\x85...' for column 'nickName' at row 126

在网上搜了几个答案,告知的原因是UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。


解决方案:将编码从utf8转换成utf8mb4。

这里一定要注意这个细节,我在解决的时候就出现了这个问题,自己也没注意到:就是在设置表的字符集后同时也要设置对应插入列的字符集

具体修改的sql如下所示:

Alter table `my_test`.`t_user_info`
charset=utf8mb4

Alter table `my_test`.`t_user_info`
change `nickName` `nickName` varchar(32) CHARSET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '昵称'

如果问题还未解决,保证参数设置如下所示,我的mysql配置信息这样问题就解决了。

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 

确保这个配置项:character-set-server=utf8mb4

标签:Incorrect,...,x93,string,utf8mb4,column,报错,nickName
来源: https://blog.csdn.net/dx523/article/details/110127728