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 ?

Pourquoi ma connexion MySQL Node.js échoue-t-elle entre minuit et 2 heures du matin et comment puis-je y remédier ?

Patricia Arquette
Libérer: 2024-12-09 18:35:15
original
660 Les gens l'ont consulté

Why Does My Node.js MySQL Connection Fail Between Midnight and 2 AM, and How Can I Fix It?

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal