mysql - 错误 : Packets out of order. 得到:0 预期:3

标签 mysql node.js database

我正在使用 NodeJS 的 MySQL 模块,但是在对数据库发出大约 10 次请求后,我不断收到以下错误。我使用以下代码连接到数据库:

var con = mysql.createConnection({
    host: "10.37.100.15",
    user: process.env.MYSQLUSR,
    password: process.env.MYSQLPASSWD,
    database: process.env.MYSQLDB
});

然后我使用con.query(sqlStatement, function (err, result, fields) {<function>}) 。我已经尝试更改 max_allowed_packet服务器上的500M但这并没有解决问题。这是完整的错误:

events.js:377
      throw er; // Unhandled 'error' event
      ^

Error: Packets out of order. Got: 0 Expected: 3
    at Parser._tryReadPacketHeader (/app/node_modules/mysql/lib/protocol/Parser.js:470:15)
    at Parser.write (/app/node_modules/mysql/lib/protocol/Parser.js:33:29)
    at Protocol.write (/app/node_modules/mysql/lib/protocol/Protocol.js:38:16)
    at Socket.<anonymous> (/app/node_modules/mysql/lib/Connection.js:88:28)
    at Socket.<anonymous> (/app/node_modules/mysql/lib/Connection.js:526:10)
    at Socket.emit (events.js:400:28)
    at addChunk (internal/streams/readable.js:293:12)
    at readableAddChunk (internal/streams/readable.js:267:9)
    at Socket.Readable.push (internal/streams/readable.js:206:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
Emitted 'error' event on Connection instance at:
    at Connection._handleProtocolError (/app/node_modules/mysql/lib/Connection.js:423:8)
    at Protocol.emit (events.js:400:28)
    at Protocol._delegateError (/app/node_modules/mysql/lib/protocol/Protocol.js:398:10)
    at Protocol.handleParserError (/app/node_modules/mysql/lib/protocol/Protocol.js:380:10)
    at Parser._tryReadPacketHeader (/app/node_modules/mysql/lib/protocol/Parser.js:478:10)
    at Parser.write (/app/node_modules/mysql/lib/protocol/Parser.js:33:29)
    [... lines matching original stack trace ...]
    at Socket.emit (events.js:400:28) {
  code: 'PROTOCOL_PACKETS_OUT_OF_ORDER',
  fatal: true
}

最佳答案

默认wait_timeout是8小时。

我怀疑 mysql-nodejs 版本没有重置重新连接时的预期数据包计数。

在测试环境中,您可以减少 wait_timeout

很可能是:

对 #2534 的最后评论是“我将连接从 mysql.createConnection 更改为 mysql.createPool,错误再也不会发生”

关于mysql - 错误 : Packets out of order. 得到:0 预期:3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70645884/

相关文章:

mysql - 打开街道 map 地址解码

mysql - 在mysql中跨多个表进行条件删除

node.js - Watson 对话 - Slack 机器人、文本格式化

android - 不断获取数据库未打开错误

sql - 使用 row_number() 的列名无效 OVER(PARTITION BY )

mysql - 如何关闭/*!12345 ... */in mysqldump

mysql - 另一个 "need to pull data from two tables in cakephp"

javascript - 解析从 Netsuite 到 Heroku 的 JSON HTTP 请求返回错误 "SyntaxError: Unexpected token p"

node.js - 将图像从 S3 存储桶下载到 Lambda 临时文件夹 (Node.js)

sql - 为什么where子句中的 "="不能匹配精确的字符串(包括空格和特殊字符)?