Résolution de l'erreur de délai d'expiration d'inactivité de négociation dans le module MYSQL de Node.js
P粉205475538
P粉205475538 2023-08-22 16:34:16
0
2
509
<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粉205475538
P粉205475538

répondre à tous(2)
P粉547420474

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

Les règles entrantes devraient ressembler à ceci :

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

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;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal