我在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的图片,请帮忙
答案 0 :(得分:0)
您可能需要在my.cnf中增加innodb_log_file_size
的服务器设置。然后重启MySQL。