错误:对于列' imagen'在第1行,列为' MEDIUMBLOB'在MySQL中

时间:2016-05-24 03:28:39

标签: java mysql jpa spring-data-jpa

我在MySQL数据库中存储的图像范围从1MB到最大7mb。为此,我创建了一个表 MEDIUMBLOB 类型的表,其容量为 16,777,215字节,它是相同的16mb。当我保存高达2.2MB的图像时,它可以完美存储,但是当保存较大但不超过7mb的图像时会出现以下错误:

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

这是我的实体图片中图像字段的定义:

@Entity
@Access(AccessType.FIELD)
@Table(name = "Imagen")
@XmlRootElement
public class Imagen implements Serializable {
    // otros campos
    @Lob
    @Column(name = "imagen", columnDefinition = "mediumblob")
    private byte[] imagen;

   // getters and setters
}

我的存储库类:

public interface ImagenRepository extends BaseRepository<Imagen, Integer> {

    // other query operations

}

基类库:

@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> extends Repository<T, ID>, Finder<T>, Counter {

    public T save(T save);

    public void delete(ID id);

    public void delete(T entity);

    public Optional<T> findOne(ID id);

}

图片表:

CREATE TABLE Imagen (
    id INT(10) NOT NULL AUTO_INCREMENT,
    -- Otros campos
    imagen MEDIUMBLOB,
    type VARCHAR(10) COLLATE UTF8_SPANISH_CI,
    PRIMARY KEY (id)
);

对于查询操作和持久性,请使用spring-data-jpa。

我不明白为什么不保存超过2.2MB的图片,请帮忙

1 个答案:

答案 0 :(得分:0)

您可能需要在my.cnf中增加innodb_log_file_size的服务器设置。然后重启MySQL。