node js mysql Ne peut pas mettre en File d'attente d'une requête après l'appel de quitter
Je suis en utilisant node.js et mysql, pour exécuter des commandes sql fréquemment.
J'obtiens cette erreur: Cannot enqueue Handshake after invoking quit
.
C'est quand je ne
connection = mysql.createConnection(sqlDetails);
connection.connect();
et
connection.end();
Si je commente la .connect
et .end
lignes, je reçois le message d'erreur ER_CON_COUNT_ERROR: Too many connections
.
Personne ne sait comment résoudre ce problème?
Grâce
- avez-vous vu ceci: stackoverflow.com/questions/14087924/...
- Selon cette github.com/felixge/node-mysql#error-handling, dit-il à définir votre connexion, puis de l'utiliser toujours. Je l'ai fait, mais maintenant je ne sais pas où mettre mon
connection.end()
. Il ditYou can listen on the error event to handle server disconnection and for reconnecting purposes.
, mais im pas sûr de la fonction pour le mettre en... - vous devez fermer une connexion globale de la première demande, ne pas utiliser un pool de connexions et de saisir une connexion pour chaque demande séparément ou ne pas fermer la connexion à la demande des gestionnaires d'
Vous devez vous connecter pour publier un commentaire.
Si vous voulez vraiment fermer la connexion (pourquoi? si vous 'exécuter des commandes sql souvent", vous voulez probablement pour les réutiliser, ou encore mieux utiliser le pool de connexion), vous devez le faire dans le résultat de la requête de rappel. Toutes les commandes sont mises en file d'attente des commandes et traitées de manière séquentielle.
C'est ce que vous faites:
Depuis node js est asynchrone , connexion.connect() et de connexion.fin() est exécutée en parallèle,
Si vous souhaitez spécifier la séquence de l'exécution, utilisez des rappels, comme