您现在的位置是:首页 > 文章详情

最简单,最快方式 Mysql兼容 emoji

日期:2018-10-08点击:498

Mysql -> mybatis -> spring boot -> java

序:

最近写一个类似成人商城的项目 ,
写了一半的时候,发现用户如果通过苹果手机发送EMOJI的表情会无法插入数据库:

=== Error updating database. Cause: java.sql.SQLException: Incorrect string value: 'xF0x9Fx92x9ExE5x80...' for column 'comment' at row 1
=== The error may involve cc.mb18.starshow.dbdto.TPageCoreDAO.intoComment-Inline
=== The error occurred while setting parameters
=== SQL: INSERT INTO t_page_comment (useruuid,username, faceurl, comment, pageuuid, createDatetime) VALUES (?,?, ?, ?, ?, ?)
=== Cause: java.sql.SQLException: Incorrect string value: 'xF0x9Fx92x9ExE5x80...' for column 'comment' at row 1
; uncategorized SQLException; SQL state [HY000]; error code [1366]; Incorrect string value: 'xF0x9Fx92x9ExE5x80...' for column 'comment' at row 1; nested exception is java.sql.SQLException: Incorrect string value: 'xF0x9Fx92x9ExE5x80...' for column 'comment' at row 1`

类似的报错.
然后网上找了一堆 需要改数据库配置的方案,但是看完以后,我就否决了这个实施的方法,虽然项目没有上线,还在开发阶段,但是,动辄修改数据库配置文件这种操作,作为一个有 自我DBA限制的人,我怎么会这样做.

正文

平时管理数据库的时候 都是使用Navicat for Mysql的
所以 以12版本为例

根据文章的学习,虽然不能按照修改数据库配置的操作 但是却找到了

根本问题所在所在,

修改数据库承接字符集,但是修改可以设定范围,

数据库级修改 还是 表级修改 还是字段级修改

我最后选择了字段级修改 附图如下
从 图1 变为 图2 (下图1)
image
从 图1 变为 图2 (下图2)
image

打开数据库 在表上 右键 设计表 然后选择字段 就会出现图中设置

`ALTER TABLE t_page_comment
MODIFY COLUMN comment varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL AFTER sername;`

因为我数据库语句不是很熟 所以我只是把软件的代码截取出来给大家参考

至此 mysql 支持 emoji的操作就完成了
另外 我为了保险起见 在
@Update("set names utf8mb4")
void setCharsetToUtf8mb4();
我在Dao里面做了一个设置当前SESSION的字符集的操作,感觉没用,也不想去证明了

最后附上校训

理论结合实践

原文链接:https://yq.aliyun.com/articles/648361
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章