web-dev-qa-db-ja.com

エラー:Node.js MYSQLモジュールでのハンドシェイクの非アクティブタイムアウト

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 }  
18

わかりました、タイムアウトは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;
20
Nick Kotenberg

Amazonのサービスを使用している場合、セキュリティ設定で許可されているIPアドレスを変更することでこれを解決できましたまたは開いている接続ポートを変更することで。

1
Berkay Torun