问题:前端axios上传太大数据时,node.js(express)后端报错或者取消状态。
前端post请求体很大,node.js(express)后端默认的post为2MB/1MB,所以需要设置请求体的大小限制。
app.use(express.json({
limit: '50mb'}));
app.use(express.urlencoded({
limit: '50mb',
extended: true,
}));
设置完了又来一个毛病,也没有报具体情况,看图,大小知道MYSQL的问题。
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:209:20)
--------------------
at Protocol._enqueue (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at PoolConnection.query (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\Connection.js:198:25)
at E:\Desktop\nodeProject\baker-mood\router\methods\MoodMethodes.js:23:25
at Handshake.onConnect (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\Pool.js:64:7)
at Handshake.<anonymous> (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\Connection.js:526:10)
at Handshake._callback (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\Connection.js:488:16)
at Handshake.Sequence.end (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
at Handshake.Sequence.OkPacket (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\protocol\sequences\Sequence.js:92:8)
at Protocol._parsePacket (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (E:\Desktop\nodeProject\baker-mood\node_modules\mysql\lib\protocol\Parser.js:433:10) {
errno: -4077,
code: 'ECONNRESET',
syscall: 'read',
fatal: true
}
Error: read ECONNRESET
经过百般折磨和查,是数据库MYSQL也有上传限制大小的以参数,导致上传太大的数据失败报错,具体在.ini文件里面配置这个上传限制大小。
由于我改了这个配置文件也没有用,所以选择了cmd的方式设置,重启数据库服务就好了。
cmd 进入 数据库
mysql -hlocalhost -uroot -p
然后输入以下命令查看数据库的上传限制大小
show VARIABLES like '%max_allowed_packet%';
这里是我改了50MB的参数 ,默认的话应该是1,048,576,也就是1MB
通过 set global max_allowed_packet = 5*1024*1024*10
设置上传限制50MB,然后重启cmd 运行上面的show命令,重启mysql服务就好了。