【问题标题】:Data truncation error - Data too long for column数据截断错误 - 列的数据太长
【发布时间】:2012-04-26 07:57:55
【问题描述】:

有趣的是在实体中:

public static final int maxContentSize = 2097152; //2Mb
@Lob
@Column(length=maxContentSize)
private byte[] content;
@Column(length = 100)
private String mimetype;
@Column(length = 50)
private String fileName;

但是,有些文件(65-70k 大小)插入正常,但大部分都报错:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'CONTENT' at row 1

我已经检查过,在创建实体之前,尺寸是正确的。

【问题讨论】:

  • 那张表的模式定义是什么?我不是说这些 JPA 注释是什么……实际上是什么?

标签: java mysql jpa


【解决方案1】:

根据 JPA 文档,“长度”仅用于字符串属性。

(可选)列长度。 (仅在使用字符串值列时适用。)

如果您使用工具自动生成 DDL.. 您可以使用“columnDefinition”属性

@Column(columnDefinition = "LONGBLOB") 
private byte[] content;

【讨论】:

  • 哇。它基于这个答案:stackoverflow.com/questions/3503841/… 但实际上它是一个 blob 列,工作文件是
  • 现在它是自动生成的,但我刚刚知道我们将使用 oracle db 并且我们将编写模式定义。所以现在我只需将列更改为真正的 medium/longblob
猜你喜欢
  • 2017-01-03
  • 2014-02-07
  • 2012-11-14
  • 2015-10-15
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
相关资源
最近更新 更多