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 { [エラー: ハンドシェイク非アクティブ タイムアウト]
コード: 'PROTOCOL_SEQUENCE_TIMEOUT'、致命的: true、
タイムアウト: 10000 }</pre>
<p><br /></p>
AWS
受信ルールは次のようになります:にデプロイしていてこのエラーが発生した場合は、データベース/クラスターのセキュリティ グループを変更する必要があります。
受信ルールを追加しますここで、
sourceは、
インスタンスのセキュリティ グループ です。リーリー
わかりました。タイムアウトは Protocol.js ファイルの 162 行目からのものです。 node-mysql を見ると、クエリされた変数が「timeout」であることがわかります。タイムアウトをデフォルトの 10000 よりも大幅に大きい値に設定すると、エラーは解消されるはずです。例は
です リーリーSequence.js ファイル (node_modules/mysql/lib/protocol/sequences/Sequence.js) でタイムアウトを編集することもできます。 リーリー