带MySQL的TypeORM-使用大长文本保存对象失败

问题描述

我在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的图像。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...