SpringBoot+MySQL遇SQL Error 1406:description字段数据过长报错
解决MySQL字段数据过长导致的保存失败问题
这个错误的核心原因是你的description字段在数据库中默认映射为VARCHAR(255),而你要保存的字符串长度(2269字符)远超这个限制,触发了MySQL的数据截断校验。以下是具体解决步骤:
1. 修改实体类字段映射
在TropicalEs类的description字段上添加@Column注解,明确指定字段类型为TEXT(可容纳65535字符,完全覆盖你的需求):
@Entity @Table(name = "t_tropical_es", uniqueConstraints = @UniqueConstraint(columnNames = { "name", "lang"})) @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Builder @ToString public class TropicalEs { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String lang; @Column(columnDefinition = "TEXT") private String description; private Date updateDate; }
如果未来可能需要存储更长的文本(超过65535字符),可以改用LONGTEXT类型:
@Column(columnDefinition = "LONGTEXT") private String description;
2. 更新数据库表结构
- 开发环境中,若开启了JPA自动建表(配置
spring.jpa.hibernate.ddl-auto=update),重启应用后Hibernate会自动将字段类型更新为TEXT。注意:生产环境禁止依赖自动建表,可能引发数据风险。 - 生产环境建议手动执行SQL语句修改表结构:
ALTER TABLE t_tropical_es MODIFY COLUMN description TEXT;
3. 验证修复
重新启动应用,尝试保存包含长字符串的TropicalEs对象,确认数据截断错误不再出现。
内容的提问来源于stack exchange,提问作者Nunyet Calçada
相关产品推荐
相关产品推荐

