解决Node.js的MYSQL模块中握手不活动超时的错误
P粉205475538
2023-08-22 16:34:16
<p>我正在使用<code>node-mysql</code>和大部分查询都能正常工作。但是有些查询无法工作。
我尝试了Node的每个版本(从0.5...到5.6.0),我还尝试了4.0和4.1,但都没有帮助。</p>
<p>我尝试了手动更改,但没有效果。我尝试将<code>sequence</code>文件更改为:<code>this._idleTimeout = -1;</code>,但也没有帮助。</p>
<p>我阅读了问题和GitHub上的内容,但没有帮助。</p>
<p>我可以尝试自己修复,但我需要更多信息。超时是在哪里发生的?为什么?何时发生的?这是什么类型的消息?超时是从哪里来的?</p>
<pre class="brush:php;toolbar:false;">MYSQL_ERROR { [Error: Handshake inactivity timeout]
code: 'PROTOCOL_SEQUENCE_TIMEOUT', fatal: true,
timeout: 10000 }</pre>
<p><br /></p>
对于在
AWS
上部署并遇到此错误的用户,您需要对数据库/集群的安全组进行更改,添加入站规则
,其中源
是 实例的安全组。入站规则应如下所示:
好的,超时是来自Protocol.js文件的第162行。如果你查看node-mysql,你会看到查询的变量是"timeout"。如果你将超时设置为比默认值10000要高得多的值,那么错误应该会消失。一个例子是
你也可以在Sequence.js文件(node_modules/mysql/lib/protocol/sequences/Sequence.js)中编辑超时时间