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
Patricia Arquetteoriginal
2024-12-09 18:35:15643parcourir

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();

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!

Déclaration:
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