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

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的字符集的操作,感觉没用,也不想去证明了

最后附上校训

理论结合实践

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值