解決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)中編輯逾時時間