一尘不染

错误:Node.js MYSQL模块中的握手不活动超时

node.js

我正在使用node-mysql和大多数查询。加工。一些查询不起作用。我尝试了Node的每个版本(从0.5
…到(5.6.0),也尝试了(4.0)和(4.1),没有任何帮助。

我试图按性别进行更改,但没有工作。我试图将sequence文件更改为:this._idleTimeout = -1;并没有帮助。

我阅读了这些问题和GitHub,但没有任何帮助。

我可以尝试自己修复它,但是我需要更多信息。超时在哪里,为什么?什么时候?这是什么类型的消息?超时从哪里来?

MYSQL_ERROR     { [Error: Handshake inactivity timeout]  
code: 'PROTOCOL_SEQUENCE_TIMEOUT',   fatal: true,   
timeout: 10000 }

阅读 328

收藏
2020-07-07

共1个答案

一尘不染

好的,超时来自Protocol.js文件行:162。如果您检出node-
mysql,您将看到它是查询的变量“超时”。如果您将超时设置为远高于默认值10000的值,则错误应消失。一个例子是

pool = require('mysql').createPool({
    connectionLimit : 1000,
    connectTimeout  : 60 * 60 * 1000,
    acquireTimeout  : 60 * 60 * 1000,
    timeout         : 60 * 60 * 1000,
    host            : process.env.DB_HOST,
    user            : process.env.DB_USERNAME,
    password        : process.env.DB_PASSWORD,
    database        : process.env.DB_DATABASE
});

您也可以在Sequence.js文件(node_modules / mysql / lib / protocol / sequence /
Sequence.js)中编辑超时

this._timeout  = 100000;
2020-07-07