Actuellement utilisé: https://github.com/felixge/node-mysql
J'ai le code suivant:
var connection = mysql.createConnection({
Host : 'localhost',
user : 'me',
password : 'secret',
database : 'Database1'
});
app.put('/api/upload', function(req, res, next)
{
connection.connect();
doMultipleQueries(function(err)
{
connection.end();
});
};
La demande de vente fonctionne parfaitement, mais en l'appelant la deuxième fois, j'obtiens l'erreur suivante
events.js:68
throw arguments[1]; // Unhandled 'error' event
^
Error: Cannot enqueue Handshake after invoking quit.
at Protocol._validateEnqueue (/Users/anon/Desktop/project Web/node_modules/mysql/lib/protocol/Protocol.js:110:16)
Suis-je censé laisser la connexion ouverte jusqu'à ce que le serveur meure?
MISE À JOUR: Lorsque je déplace le mysql.createConnection
Dans la fonction de demande de vente comme ceci:
var connection = null;
app.put('/api/upload', function(req, res, next)
{
connection = mysql.createConnection({
Host : 'localhost',
user : 'me',
password : 'secret',
database : 'Database1'
});
connection.connect();
doMultipleQueries(function(err)
{
connection.end();
});
};
Ça fonctionne bien. Cela signifie-t-il que connection.end()
ferme ce que mysql.createConnection
A créé et ne peut pas être reconnecté?
connection.end () ça marche malgré l'erreur fatale. Si une erreur fatale se produit avant le COM_QUIT
un paquet peut être envoyé, un argument err
sera fourni au rappel, mais la connexion sera interrompue malgré cela.
Vérifiez également méthode destroy () . Cela entraînera une résiliation immédiate du socket sous-jacent.
Vous pouvez ajouter un gestionnaire d'erreurs.
https://github.com/felixge/node-mysql/blob/master/Readme.md#error-handling
connection.on('error', function() {});
Une fois terminé, un objet de connexion existant ne peut pas être reconnecté par conception.
Vérifiez ici. Cela montre la connexion après la déconnexion.
https://github.com/felixge/node-mysql/blob/master/Readme.md#server-disconnects
Je crois que la bonne façon est de simplement obtenir une connexion pour votre application au démarrage, et end()
lorsque votre application se ferme.