最简单,最快方式 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)从 图1 变为 图2 (下图2) 打开数据库 在表上 右键 设计表 然后选择字段 就会出现图中设置 `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的字符集的操作,感觉没用,也不想去证明了 最后附上校训 理论结合实践