Maison  >  Questions et réponses  >  le corps du texte

Résolution de l'erreur de délai d'expiration d'inactivité de négociation dans le module MYSQL de Node.js

<p>J'utilise <code>node-mysql</code> et la plupart des requêtes fonctionnent correctement. Mais certaines requêtes ne fonctionnent pas. J'ai essayé toutes les versions de Node (de 0.5... à 5.6.0), j'ai également essayé 4.0 et 4.1 mais aucune n'a aidé. </p> <p>J'ai essayé de le modifier manuellement, mais cela n'a pas fonctionné. J'ai essayé de changer le fichier <code>sequence</code> en : <code>this._idleTimeout = -1;</code> mais cela n'a pas aidé non plus. </p> <p>J'ai lu le problème et d'autres informations sur GitHub, mais cela n'a pas aidé. </p> <p>Je pourrais essayer de résoudre le problème moi-même, mais j'ai besoin de plus d'informations. Où se produit le délai d’attente ? Pourquoi? Quand est-ce arrivé? De quel type de message s'agit-il ? D'où vient le timeout ? </p> <pre class="brush:php;toolbar:false;">MYSQL_ERROR { [Erreur : délai d'inactivité de la poignée de main] code : 'PROTOCOL_SEQUENCE_TIMEOUT', fatal : vrai, délai d'attente : 10 000 }</pre> <p><br /></p>
P粉205475538P粉205475538424 Il y a quelques jours458

répondre à tous(2)je répondrai

  • P粉547420474

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

    Pour le AWS 上部署并遇到此错误的用户,您需要对数据库/集群的安全组进行更改,添加入站规则,其中 est le groupe de sécurité de l'instance .

    Les règles entrantes devraient ressembler à ceci :

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

    répondre
    0
  • P粉155128211

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

    D'accord, le délai d'attente provient de la ligne 162 du fichier Protocol.js. Si vous regardez node-mysql, vous verrez que la variable interrogée est "timeout". Si vous définissez le délai d'attente sur une valeur beaucoup plus élevée que la valeur par défaut de 10 000, l'erreur devrait disparaître. Un exemple est

    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
    });

    Vous pouvez également modifier le délai d'attente dans le fichier Sequence.js (node_modules/mysql/lib/protocol/sequences/Sequence.js)

    this._timeout  = 100000;

    répondre
    0
  • Annulerrépondre