J'utilise node-mysql
et la plupart des requêtes. Travail. certaines requêtes ne fonctionnent pas. J'ai essayé toutes les versions de Node (de 0,5 ...) jusqu'à (5.6.0), j'ai également essayé (4.0) et (4.1), rien n'y fait.
J'ai essayé de changer maually, et ça n'a pas marché. J'ai essayé de changer le fichier sequence
en: this._idleTimeout = -1;
et n'a pas aidé.
J'ai lu les numéros et GitHub, et rien n'y fait.
Je peux essayer de le réparer moi-même, mais j'ai besoin de plus d'informations. Où est le délai d'attente, pourquoi? quand? quel est ce type de message? D'où vient le délai d'attente?
MYSQL_ERROR { [Error: Handshake inactivity timeout]
code: 'PROTOCOL_SEQUENCE_TIMEOUT', fatal: true,
timeout: 10000 }
Ok, le délai d'attente provient de la ligne de fichier Protocol.js: 162. Si vous extrayez node-mysql, vous verrez qu'il s'agit d'une variable "timeout" pour les requêtes. Si vous définissez le délai d'expiration sur quelque chose de bien supérieur à 10000, la valeur par défaut, 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'expiration dans le fichier Sequence.js (node_modules/mysql/lib/protocol/sequence/Sequence.js)
this._timeout = 100000;
Si vous utilisez les services d'Amazon, j'ai pu résoudre ce problème en modifiant les adresses IP autorisées dans les paramètres de sécurité o en modifiant les ports de connexion ouverts.