Node.js MySQL : Résolution de l'erreur « Connexion perdue : le serveur a fermé la connexion »
Lors de l'établissement de connexions aux bases de données MySQL à l'aide de Node. js, il est possible de rencontrer une erreur indiquant « Connexion perdue : le serveur a fermé la connexion ». Cette erreur se produit généralement entre 12h00 et 14h00, lorsque la connexion TCP est interrompue par le serveur.
Solution 1 : Gestion automatique de la reconnexion
À gérer cette erreur automatiquement, implémentez le code suivant :
var db_config = { host: 'localhost', user: 'root', password: '', database: 'example' }; var connection; function handleDisconnect() { connection = mysql.createConnection(db_config); connection.connect(function(err) { if(err) { console.log('error when connecting to db:', err); setTimeout(handleDisconnect, 2000); } }); connection.on('error', function(err) { console.log('db error', err); if(err.code === 'PROTOCOL_CONNECTION_LOST') { handleDisconnect(); } else { throw err; } }); } handleDisconnect();
Dans ce code, une connexion est établie avec le serveur MySQL. Si la connexion est perdue en raison d'un redémarrage du serveur ou d'un délai d'inactivité, la fonction handleDisconnect() est appelée, ce qui rétablit la connexion.
Solution 2 : Reconnexion manuelle
Dans le code fourni, vous avez implémenté une partie du mécanisme de reconnexion automatique, mais il manque une partie après la ligne connection = mysql.createConnection(kf_config);. Le code suivant termine l'implémentation :
connection.connect(function(err) { if (err) { console.log("Error connecting to KFC: " + err); } else { console.log("KF connected!"); } });
Vous devez également enregistrer un écouteur d'erreur sur l'objet de connexion pour gérer automatiquement les événements de perte de connexion. Par exemple :
connection.on('error', function(err) { if (err.code === 'PROTOCOL_CONNECTION_LOST') { console.log("KF connection lost. Reconnecting..."); handleKFDisconnect(); } else { throw err; } });
En suivant ces étapes, vous pouvez vous assurer que votre application MySQL Node.js gère correctement la perte de connexion et rétablit automatiquement la connexion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!