Heim >Datenbank >MySQL-Tutorial >Warum erhält meine Node.js-App bei der Verwendung von MySQL die Fehlermeldung „Verbindung verloren: Der Server hat die Verbindung geschlossen' und wie kann ich sie beheben?

Warum erhält meine Node.js-App bei der Verwendung von MySQL die Fehlermeldung „Verbindung verloren: Der Server hat die Verbindung geschlossen' und wie kann ich sie beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-13 03:09:10342Durchsuche

Why Does My Node.js App Get

Verbindung verloren: Fehlerbehebung bei MySQL-Verbindungsabbrüchen in Node.js

Node.js-Benutzer stoßen möglicherweise auf die Meldung „Verbindung verloren: Der Server hat die Verbindung geschlossen.“ "Fehler bei Verwendung des MySQL-Moduls. Dieses Problem tritt auf, wenn der Server die TCP-Verbindung abrupt beendet, häufig innerhalb eines bestimmten Zeitbereichs (z. B. zwischen Mitternacht und 2 Uhr morgens).

Ursache

Der Fehler zeigt an dass die Verbindung zwischen Node.js und dem MySQL-Server vom Server getrennt wurde, typischerweise aufgrund einer unerwarteten Verbindungsunterbrechung oder eines unerwarteten Serverabbruchs Neustart.

Lösung

Um dieses Problem zu beheben, kann man einen Verbindungsverarbeitungsmechanismus einsetzen, der verlorene Verbindungen automatisch erkennt und wiederherstellt. Hier ist ein Beispiel:

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

Erklärung

In dieser Lösung:

  1. Das db_config-Objekt gibt die Datenbankverbindungsparameter an.
  2. Die Funktion handleDisconnect wird aufgerufen, um eine neue Verbindung zu erstellen und einen Fehlerhandler anzufügen it.
  3. Wenn die Verbindung aufgrund eines Serverneustarts oder einer Zeitüberschreitung im Leerlauf verloren geht, erkennt der Fehlerhandler dies und ruft die Funktion handleDisconnect erneut auf, die die Verbindung neu erstellt.
  4. Die Funktion setTimeout verhindert übermäßige Wiederverbindungsversuche durch Einführung einer Verzögerung vor dem erneuten Versuch.

Durch die Implementierung dieses Verbindungsverarbeitungsmechanismus können Sie sicherstellen, dass Ihre Anwendung temporäre Verbindungen ordnungsgemäß verarbeiten kann Verluste zu vermeiden und eine zuverlässige Verbindung zur MySQL-Datenbank aufrechtzuerhalten, auch während Serverneustarts oder Wartungsperioden.

Das obige ist der detaillierte Inhalt vonWarum erhält meine Node.js-App bei der Verwendung von MySQL die Fehlermeldung „Verbindung verloren: Der Server hat die Verbindung geschlossen' und wie kann ich sie beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn