解决MySQL不能存储Emoji表情的问题

原因分析

在MySQL 5.5.3之前版本的数据库中,数据库的默认编码是utf8字符集,只支持1-3个字节的字符,也就是只能保存1到3个字节。但现在的emoji表情需要用4个字节才能保存,所以抛出异常。

解决方案

1、将数据表的编码格式设置成utf8mb4_general_ci

sql 复制代码
ALTER TABLE XXX CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

此时数据库已经可以支持emoji表情了

2、修改JDBC链接

sql 复制代码
修改前

jdbc.url=jdbc:mysql:/域名:端口/数据库?useUnicode=true&character_set_server=utf-8

修改后

jdbc.url=jdbc:mysql:/域名:端口/数据库?useUnicode=true&character_set_server=utf8mb4

最后修改druid数据源的配置,增加一行。

bash 复制代码
<property name="connectionInitSqls" value="set names utf8mb4;"/>
相关推荐
幼儿园老大*2 小时前
数据中心-时序数据库InfluxDB
数据库·时序数据库
daixin88482 小时前
Redis过期数据的删除策略是什么?有哪些?
数据库·redis·缓存
Lemon程序馆2 小时前
今天聊聊 Mysql 的那些“锁”事!
后端·mysql
陪我一起学编程2 小时前
MySQL创建普通用户并为其分配相关权限的操作步骤
开发语言·数据库·后端·mysql·oracle
Albert Tan3 小时前
ORACLE DATABASE 23AI+Apex+ORDS -纯享版
数据库·oracle
程序员编程指南3 小时前
Qt OpenGL 集成:开发 3D 图形应用
c语言·数据库·c++·qt·3d
婪苏(Python学习ing)4 小时前
MySQL 与 Redis 基础入门:从安装到核心操作
数据库
幻灭行度5 小时前
通过redis_exporter监控redis cluster
数据库·redis·缓存
Wang's Blog5 小时前
Nestjs框架: 基于Mongodb的多租户功能集成和优化
数据库·mongodb·多租户
Edingbrugh.南空5 小时前
Aerospike架构深度解析:打造web级分布式应用的理想数据库
数据库·架构