问题描述
我在mysql中有一个简单的表:
create table if not exists images
(
id int auto_increment primary key,data longtext not null,metaData json not null,created timestamp default CURRENT_TIMESTAMP
}
我最多可以插入3 MB左右的图像,而不会出现任何问题:
// private imageRepository: Repository<Image>
...
const savedImage: Image = await this.imageRepository.save(image); // 'imageRepository' is the TypeORM repository
尝试保存较大的图像会导致以下错误消息:
(node:8764) UnhandledPromiseRejectionWarning: QueryFailedError: read ECONNRESET
任何想法如何解决此问题?也许我错过了,但是TypeORM文档没有提供任何帮助。
解决方法
根据Spikie的评论,这是解决方案:
请参阅:https://dev.mysql.com/doc/refman/8.0/en/blob.html
max_allowed_packet
是一个MySQL变量,需要在服务器和客户端将其设置为足够大的数字,以容纳要存储的最大所需Blob大小。就我而言,它设置为4.194.304,这意味着我能够存储的最大块约为4MB。将这个值增加到20Mb左右后,我可以存储最大约20MB的图像。