Emoji表情符号录入MySQL数据库报错的解决方案

来源:互联网 发布:怎么查询淘宝授权书 编辑:程序博客网 时间:2024/06/05 10:15
1,查看tomcat后台日志,核心报错信息如下: 
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1
2,先去修改表字段字符集为utf8mb4: 
ALTER TABLE UGC_REVIEW_CONTENT MODIFY `CONTENT` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '评论内容';
3,再去修改表字符集utf8mb4:
ALTER TABLE UGC_REVIEW_CONTENT CHARSET=utf8mb4 COMMENT='晒单/推荐的评论内容';
4,再去修改数据库的字符集utf8mb4: 

vim my.cnf

内容修改:

[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4

5,将my.cnf的权限修改为只读权限

sudo chmod 444 my.cnf

6,问题分析总结:

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

mysql启动时会扫描配置文件my.cnf ,如果my.cnf不是只读的,启动时会跳过my.cnf文件,导致mysql启动失败


1 0
原创粉丝点击