Résolution de l'erreur de délai d'expiration d'inactivité de négociation dans le module MYSQL de Node.js
P粉205475538
2023-08-22 16:34:16
<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>
Pour le
AWS
上部署并遇到此错误的用户,您需要对数据库/集群的安全组进行更改,添加入站规则
,其中源
est le groupe de sécurité de l'instance .Les règles entrantes devraient ressembler à ceci :
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
Vous pouvez également modifier le délai d'attente dans le fichier Sequence.js (node_modules/mysql/lib/protocol/sequences/Sequence.js)