开发者社区> 夜景繁华> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

最后附上校训

理论结合实践

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【MySQL】你还不会在Docker下安装MySQL主备吗?
那什么时候就要开始考虑搭建主备架构呢, 一方面是随着业务增长,读写请求已经到达了一定的瓶颈时,我们需要考虑,另一方面为了保证数据的完整性,以保证主宕机的时候,可以快速切换。
7 0
mysql安装记录
mysql安装记录
8 0
MySQL安装+配置
首先在MySQL官网上下载安装包Mysql官网下载 解压后选择合适的安装路径一路next安装
7 0
Linux 使用rpm方式安装最新mysql(5.7.22)步骤以及常见问题解决
Linux 使用rpm方式安装最新mysql(5.7.22)步骤以及常见问题解决
8 0
Linux安装MYSQL 并使用图形化界面连接
Linux安装MYSQL 并使用图形化界面连接
25 0
MySql的详细安装说明
MySql的详细安装说明
24 0
Docker 安装 MySQL | 学习笔记
快速学习 Docker 安装 MySQL
14 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
好的 MySQL 兼容可以做到什么程度
立即下载
让 MySQL 原生分布式触手可及
立即下载
MySQL 5.7优化不求人
立即下载