Maison >base de données >tutoriel mysql >Pourquoi ma connexion MySQL Node.js échoue-t-elle entre minuit et 2 heures du matin et comment puis-je y remédier ?
Problème de connexion MySQL : "Connexion perdue : le serveur a fermé la connexion"
Problème :
Lors de l'utilisation de Node.js avec MySQL, une erreur « Connexion perdue : le serveur a fermé la connexion » se produit à des heures précises (généralement entre minuit et 2 heures du matin).
Solution :
Suivez les étapes ci-dessous pour résoudre ce problème :
var db_config = { host: 'localhost', user: 'root', password: '', database: 'example' }; var connection; function handleDisconnect() { // Recreate the connection connection = mysql.createConnection(db_config); connection.connect(function(err) { if(err) { console.log('error when connecting to db:', err); setTimeout(handleDisconnect, 2000); // Delay before reconnecting } }); // Handling connection errors connection.on('error', function(err) { console.log('db error', err); if(err.code === 'PROTOCOL_CONNECTION_LOST') { handleDisconnect(); } else { throw err; } }); } handleDisconnect();
Explication :
Cet extrait de code crée une nouvelle connexion au serveur MySQL lorsqu'une déconnexion se produit. La fonction setTimeout introduit un délai pour éviter une boucle chaude, permettant au script de traiter d'autres requêtes lors de la reconnexion.
Le gestionnaire d'erreurs est configuré pour gérer les erreurs « PROTOCOL_CONNECTION_LOST », qui se produisent généralement lors des redémarrages du serveur. D'autres erreurs sont renvoyées, fournissant des informations plus détaillées sur le problème.
La fonction handleDisconnect() est appelée pour lancer le processus de gestion des erreurs et de reconnexion.
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!