suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Behebung des Handshake-Inaktivitäts-Timeout-Fehlers im MYSQL-Modul von Node.js

<p>Ich verwende <code>node-mysql</code> und die meisten Abfragen funktionieren einwandfrei. Einige Abfragen funktionieren jedoch nicht. Ich habe jede Version von Node ausprobiert (von 0.5 bis 5.6.0), ich habe auch 4.0 und 4.1 ausprobiert, aber keine hat geholfen. </p> <p>Ich habe versucht, es manuell zu ändern, aber es hat nicht funktioniert. Ich habe versucht, die Datei <code>sequence</code> zu ändern: <code>this._idleTimeout = -1;</code>, aber das hat auch nicht geholfen. </p> <p>Ich habe das Problem und den Kram auf GitHub gelesen, aber es hat nicht geholfen. </p> <p>Ich könnte versuchen, das Problem selbst zu beheben, aber ich benötige weitere Informationen. Wo tritt die Zeitüberschreitung auf? Warum? Wann ist es passiert? Was für eine Nachricht ist das? Woher kommt die Zeitüberschreitung? </p> <pre class="brush:php;toolbar:false;">MYSQL_ERROR { [Fehler: Zeitüberschreitung bei Handshake-Inaktivität] Code: 'PROTOCOL_SEQUENCE_TIMEOUT', fatal: true, Zeitüberschreitung: 10000 }</pre> <p><br /></p>
P粉205475538P粉205475538464 Tage vor512

Antworte allen(2)Ich werde antworten

  • P粉547420474

    P粉5474204742023-08-23 15:56:17

    对于在 AWS 上部署并遇到此错误的用户,您需要对数据库/集群的安全组进行更改,添加入站规则,其中 实例的安全组

    入站规则应如下所示:

    类型:MySQL/Aurora
    协议:TCP(默认)
    端口:3306(默认)
    源:<实例的安全组>
    描述:<可选>

    Antwort
    0
  • P粉155128211

    P粉1551282112023-08-23 09:38:03

    好的,超时是来自Protocol.js文件的第162行。如果你查看node-mysql,你会看到查询的变量是"timeout"。如果你将超时设置为比默认值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;

    Antwort
    0
  • StornierenAntwort