Heim > Datenbank > MySQL-Tutorial > Warum bricht meine Node.js-MySQL-Verbindung immer wieder um Mitternacht ab?

Warum bricht meine Node.js-MySQL-Verbindung immer wieder um Mitternacht ab?

Susan Sarandon
Freigeben: 2024-12-09 01:51:12
Original
1022 Leute haben es durchsucht

Why Does My Node.js MySQL Connection Keep Dropping Around Midnight?

MySQL-Verbindung verloren: Behebung des Fehlers „Verbindung verloren: Der Server hat die Verbindung geschlossen“

Beim Arbeiten mit Node.js und MySQL Gelegentlich kann es zu einer Fehlermeldung kommen, die darauf hinweist, dass der Server die Verbindung geschlossen hat. Dies geschieht normalerweise zwischen 12:00 und 2:00 Uhr morgens und lässt Sie verwirrt zurück. Die Fehlermeldung erscheint oft wie folgt:

Error: Connection lost: The server closed the connection.
at Protocol.end (/opt/node-v0.10.20-linux-x64/IM/node_modules/mysql/lib/protocol/Protocol.js:73:13)
at Socket.onend (stream.js:79:10)
at Socket.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)
Nach dem Login kopieren

Obwohl versucht wird, die empfohlene Lösung zu finden, besteht das Problem weiterhin. Hier ist ein umfassenderer Ansatz, um diesen Fehler effektiv zu behandeln:

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) {              // Attempt to connect
    if(err) {
      console.log('error when connecting to db:', err);
      setTimeout(handleDisconnect, 2000); // Delay reconnection attempts
    }
  });

  connection.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection lost due to server restart or idle timeout
      handleDisconnect();
    } else {
      throw err;
    }
  });
}

handleDisconnect();
Nach dem Login kopieren

Dieser Code führt Folgendes aus:

  1. Erstellt das MySQL-Verbindungsobjekt in der Funktion handleDisconnect neu .
  2. Versuche, die Verbindung wiederherzustellen, indem „connection.connect()“ innerhalb von handleDisconnect aufgerufen wird.
  3. Wenn ein Wenn während der Verbindung ein Fehler auftritt, wird der Fehler protokolliert und innerhalb von 2 Sekunden ein erneuter Verbindungsversuch geplant, um übermäßige erneute Verbindungsversuche zu vermeiden.
  4. Es richtet einen „Fehler“-Ereignis-Listener für das Verbindungsobjekt ein, um alle Fehler zu überwachen, die während des Verbindungsaufbaus auftreten können Verbindungslebenszyklus.
  5. Wenn ein „PROTOCOL_CONNECTION_LOST“-Fehler erkannt wird, der auf einen Verbindungsverlust aufgrund eines Serverneustarts oder einer Leerlaufzeitüberschreitung hinweist, wird der Fehler ausgelöst handleDisconnect-Funktion erneut verwenden, um die Verbindung neu zu erstellen und wiederherzustellen.

Durch die Implementierung dieses Ansatzes können Sie MySQL-Verbindungsverlustfehler effektiv behandeln und eine nahtlose Datenbankkonnektivität in Ihren Node.js-Anwendungen sicherstellen.

Das obige ist der detaillierte Inhalt vonWarum bricht meine Node.js-MySQL-Verbindung immer wieder um Mitternacht ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage