You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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编码。

解决方案

按以下步骤调整配置:

  1. 修正JDBC连接URL参数
    你的原始URL存在两个问题:

    • 数据库名称和参数之间应该用?分隔,而不是空格
    • 缺少characterSetResults=utf8mb4参数,同时确保字符编码参数正确
      修改后的URL应为:
    url: "jdbc:mariadb://localhost:3306/genius_back?useUnicode=yes&characterEncoding=UTF-8&characterSetResults=utf8mb4"
    
  2. 补充Hibernate连接字符集配置
    在application.yml中添加Hibernate的相关配置,强制它使用utf8mb4编码:

    spring:
      jpa:
        properties:
          hibernate:
            connection:
              characterEncoding: utf8mb4
              useUnicode: true
    
  3. 保留Hikari的验证查询(可选但推荐)
    你当前的validation-query: "SET NAMES utf8mb4"可以保留,它会在连接池验证连接时自动设置字符集,进一步确保连接的编码正确性。

验证修改

重启你的Spring Boot应用后,再次尝试插入包含Emoji的notes字段,应该就能正常执行,不会再出现1366错误了。

内容的提问来源于stack exchange,提问作者psv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:54:57