Spring Boot + MariaDB插入Emoji失败问题求助
解决Spring Boot+JPA插入Emoji到MariaDB的SQL错误问题
问题根源
你遇到的Incorrect string value错误,核心原因是JDBC连接没有正确启用utf8mb4支持。虽然你的数据库表和notes字段都配置了utf8mb4(支持4字节的Emoji字符),但应用通过JDBC连接数据库时,仍然使用的是仅支持3字节字符的普通utf8编码,导致无法处理Emoji这类4字节字符。而直接通过SQL客户端执行更新能成功,是因为你的客户端已经默认使用了utf8mb4编码。
解决方案
按以下步骤调整配置:
修正JDBC连接URL参数
你的原始URL存在两个问题:- 数据库名称和参数之间应该用
?分隔,而不是空格 - 缺少
characterSetResults=utf8mb4参数,同时确保字符编码参数正确
修改后的URL应为:
url: "jdbc:mariadb://localhost:3306/genius_back?useUnicode=yes&characterEncoding=UTF-8&characterSetResults=utf8mb4"- 数据库名称和参数之间应该用
补充Hibernate连接字符集配置
在application.yml中添加Hibernate的相关配置,强制它使用utf8mb4编码:spring: jpa: properties: hibernate: connection: characterEncoding: utf8mb4 useUnicode: true保留Hikari的验证查询(可选但推荐)
你当前的validation-query: "SET NAMES utf8mb4"可以保留,它会在连接池验证连接时自动设置字符集,进一步确保连接的编码正确性。
验证修改
重启你的Spring Boot应用后,再次尝试插入包含Emoji的notes字段,应该就能正常执行,不会再出现1366错误了。
内容的提问来源于stack exchange,提问作者psv
相关产品推荐
相关产品推荐

