Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine Node.js-MySQL-Verbindung zwischen Mitternacht und 2 Uhr morgens fehl und wie kann ich das beheben?

Warum schlägt meine Node.js-MySQL-Verbindung zwischen Mitternacht und 2 Uhr morgens fehl und wie kann ich das beheben?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-09 18:35:15642Durchsuche

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

MySQL-Verbindungsproblem: „Verbindung verloren: Der Server hat die Verbindung geschlossen“

Problem:

Bei der Verwendung von Node.js mit MySQL tritt zu bestimmten Zeiten (normalerweise zwischen Mitternacht und...) der Fehler „Verbindung verloren: Der Server hat die Verbindung geschlossen“ auf 2 Uhr morgens).

Lösung:

Folgen Sie den folgenden Schritten, um dieses Problem zu beheben:

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

Erklärung:

Dieses Code-Snippet erstellt eine neue Verbindung zum MySQL-Server, wenn eine Trennung auftritt. Die setTimeout-Funktion führt eine Verzögerung ein, um eine Hot-Loop zu verhindern, sodass das Skript andere Anfragen verarbeiten kann, während die Verbindung wiederhergestellt wird.

Der Fehlerhandler ist für die Behandlung von „PROTOCOL_CONNECTION_LOST“-Fehlern konfiguriert, die normalerweise bei Serverneustarts auftreten. Andere Fehler werden erneut ausgegeben und liefern detailliertere Informationen zum Problem.

Die Funktion handleDisconnect() wird aufgerufen, um die Fehlerbehandlung und den Wiederherstellungsprozess einzuleiten.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine Node.js-MySQL-Verbindung zwischen Mitternacht und 2 Uhr morgens fehl und wie kann ich das 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