Maison >base de données >tutoriel mysql >Comment puis-je gérer efficacement les erreurs de « connexion perdue » dans mon application MySQL Node.js ?

Comment puis-je gérer efficacement les erreurs de « connexion perdue » dans mon application MySQL Node.js ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-13 03:21:09503parcourir

How Can I Effectively Handle

Node.js MySQL : gestion efficace des erreurs de « connexion perdue »

Lorsque vous travaillez avec MySQL dans Node.js, vous pouvez rencontrer une erreur indiquant que le serveur a fermé la connexion. Ce problème se produit souvent en raison d'un arrêt de la connexion TCP par le serveur.

Comprendre l'erreur

L'erreur apparaît généralement comme :

Error: Connection lost: The server closed the connection.
...

Cela suggère que la connexion établie entre l'application Node.js et le serveur MySQL a été interrompue de manière inattendue.

Solution

Pour résoudre ce problème, vous pouvez utiliser un mécanisme de gestion de connexion pour vous reconnecter automatiquement lorsqu'une connexion est perdue. Voici un extrait de code qui montre comment gérer les déconnexions du serveur :

var db_config = {
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'example'
};

var connection;

function handleDisconnect() {
  connection = mysql.createConnection(db_config); // Recreate the connection

  connection.connect(function(err) {
    if (err) {
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000); // Delay before reconnecting
    }
  });

  connection.on('error', function(err) {
    console.log('db error', err);
    if (err.code === 'PROTOCOL_CONNECTION_LOST') { // Lost connection
      handleDisconnect();
    } else {
      throw err;
    }
  });
}

handleDisconnect();

Analyse

  • La fonction handleDisconnect() établit une nouvelle connexion avec le serveur MySQL en utilisant la méthode createConnection().
  • Il configure également un écouteur d'événement pour l'erreur événement.
  • Lorsqu'une connexion est perdue en raison d'une erreur "PROTOCOL_CONNECTION_LOST" (qui est le code d'une connexion perdue), la fonction handleDisconnect() est appelée de manière récursive pour établir une nouvelle connexion.
  • Sinon, l'erreur est générée.

Supplémentaire Notes

La fonction handleDisconnect() peut être invoquée manuellement ou automatiquement lorsque la tentative de connexion initiale échoue. Cela garantit que l'application peut continuer à fonctionner même si la connexion est perdue de manière inattendue.

En implémentant ce mécanisme de gestion des connexions, vous pouvez empêcher votre application Node.js/MySQL de planter en raison d'une perte de connexion. Cela peut améliorer considérablement la fiabilité et la stabilité de votre projet.

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