Maison > base de données > tutoriel mysql > Pourquoi mon application Node.js obtient-elle l'erreur « Connexion perdue : le serveur a fermé la connexion » lors de l'utilisation de MySQL et comment puis-je y remédier ?

Pourquoi mon application Node.js obtient-elle l'erreur « Connexion perdue : le serveur a fermé la connexion » lors de l'utilisation de MySQL et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-13 03:09:10
original
345 Les gens l'ont consulté

Why Does My Node.js App Get

Connexion perdue : dépannage des déconnexions MySQL dans Node.js

Les utilisateurs de Node.js peuvent rencontrer le message "Connexion perdue : le serveur a fermé la connexion " erreur lors de l'utilisation du module mysql. Ce problème survient lorsque le serveur met fin brusquement à la connexion TCP, souvent dans un intervalle de temps spécifique (par exemple, entre minuit et 2 heures du matin).

Cause

L'erreur indique que la connexion entre Node.js et le serveur MySQL a été interrompue par le serveur, généralement en raison d'une déconnexion inattendue ou d'un serveur redémarrer.

Solution

Pour résoudre ce problème, on peut utiliser un mécanisme de gestion des connexions qui détecte et rétablit automatiquement les connexions perdues. Voici un exemple :

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

Explication

Dans cette solution :

  1. L'objet db_config spécifie les paramètres de connexion à la base de données.
  2. La fonction handleDisconnect est invoquée pour créer une nouvelle connexion et attacher un gestionnaire d'erreurs à
  3. Si la connexion est perdue en raison d'un redémarrage du serveur ou d'un délai d'inactivité, le gestionnaire d'erreurs le détecte et appelle à nouveau la fonction handleDisconnect, qui recrée la connexion.
  4. La fonction setTimeout empêche les excès de connexion. tentatives de reconnexion en introduisant un délai avant de réessayer.

En implémentant ce mécanisme de gestion des connexions, vous pouvez vous assurer que votre application peut gérer correctement les tentatives de reconnexion. pertes de connexion et maintenir une connexion fiable à la base de données MySQL, même pendant les redémarrages du serveur ou les périodes de maintenance.

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