Spring Boot Entity向MySQL传递长文本变量 字段过长报错如何解决
报错原因
Data truncation: Data too long for column 'profile' at row 1
这个报错是因为JPA默认会将Java的String类型字段映射为MySQL的varchar(255)类型,当你存储的profile字段内容长度超过255字符时,就会触发数据截断报错。
解决方案
根据你存储的文本长度选择对应的配置方式:
方案1:固定长度的长文本(总长度不超过65535)
直接在字段上加@Column注解指定足够的长度即可,比如你需要最多存2000字符,配置如下:
@Column(length = 2000) private String profile;
方案2:不定长的超长文本(总长度超过65535)
如果是大段的文本内容(比如富文本、长介绍等),可以映射为MySQL的TEXT/LONGTEXT类型,需要搭配@Lob注解使用:
@Lob @Column(columnDefinition = "TEXT") private String profile;
如果需要存储更大的内容,可以把TEXT换成LONGTEXT,最大支持存储4GB的文本内容。
修改后完整实体类示例
@Entity @Table(name = "profile_master") public class profileEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int p_id; // 按你的实际文本长度选择对应配置即可,这里以TEXT类型为例 @Lob @Column(columnDefinition = "TEXT") private String profile; private String website; private String bio; private String gender; // getter setter }
注意事项
- 如果你是用JPA自动建表策略(比如
spring.jpa.hibernate.ddl-auto设为update),配置完成后启动项目会自动更新字段类型; - 如果你是手动维护数据库表结构,需要手动将数据库中
profile字段的类型修改为你配置的对应类型,否则还是会报错。
内容的提问来源于stack exchange,提问作者Faheem azaz Bhanej
相关产品推荐
相关产品推荐

