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

新手上路,请多包涵

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

我试图改变maually,但没有奏效。我试图将 sequence 文件更改为: this._idleTimeout = -1; 并没有帮助。

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

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

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

原文由 Aminadav Glickshtein 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

好的,超时来自 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/sequences/Sequence.js) 中编辑超时

this._timeout  = 100000;

原文由 Nick Kotenberg 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于那些在 AWS 上部署并遇到此错误的用户,您需要更改数据库/集群的安全组和 add an inbound rule 其中 source您的实例的安全组

入站规则应如下所示:

 Type: MySQL/Aurora
Protocol: TCP (default)
Port: 3306 (default)
Source: <security group of instance>
Description: <optional>

原文由 M3talM0nk3y 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏