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

SpringBoot/JPA操作MySQL latin1表时数据截断错误的解决

问题描述

我们正将软件从PHP迁移至Java,采用SpringBoot/JPA存储数据。当前所有数据存储在使用latin1排序规则(ISO-8859-1)的MySQL中,暂无法修改。

在PHP系统中,向数据库存储UTF8字符可正常工作,非UTF8字符会被省略或替换为"?"。但通过SpringBoot存储含UTF8字符的字符串时,出现如下异常:

2022-07-25 10:54:43.894  WARN 84143 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 1366, SQLState: 22001
2022-07-25 10:54:43.897 ERROR 84143 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper   : Data truncation: Incorrect string value: '\xEF\x82\xA7;\x0A\x09...' for column `tanss`.`mails`.`body` at row 1

请问是否有办法在持久化前忽略这些字符,仅存储latin1字符?比如在application.properties或MySQL服务器中设置?

已验证的解决方案

我已解决该问题。若其他人遇到使用latin1排序规则的同类问题:MySQL驱动8.0.29不再根据MySQL服务器默认字符集确定编码,默认使用utf8mb4。在JDBC URL中添加&characterEncoding=latin1即可解决!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:36:33