1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
MySQL-Fehler beheben (server has gone away)
Diese Anleitung hilft, einen Typ Fehler zu beheben "Invalid query: MySQL server has gone away
".
Präambel
- Diese Art von Fehler hat häufig die Ursache dafür, dass eine MySQL-Verbindung ohne Abfragen für einen Zeitraum geöffnet bleibt, über den die Verbindung geschlossen ist: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html
- Variablen wait_timeout und interaktiv_timeout die diese Abschaltung kontrollieren, sind 30 Sekunden entfernt: http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html
Lösungen
Um den Fehler "MySQL server has gone away" zu vermeiden, sind hier mehrere mögliche Ansätze.
Überprüfung und automatische Wiederverbindung
Bevor Sie eine Anfrage ausführen, wird empfohlen, zu prüfen, ob die MySQL-Verbindung noch aktiv ist. Wenn die Verbindung geschlossen wurde, können Sie sie automatisch wiederherstellen, bevor Sie mit Ihrer Anfrage fortfahren. Hier ist ein Beispiel in PHP:
if (!mysqli_ping($connexion)) {
mysqli_close($connexion);
$connexion = mysqli_connect($host, $user, $password, $database);
}
Die Funktion mysqli_ping()
überprüft, ob die Verbindung noch gültig ist. Wenn nicht, schließt das Skript die Verbindung und öffnet eine neue.
Regelmäßiges "Ping" versenden
Eine andere Möglichkeit besteht darin, ein Skript auszuführen, das regelmäßig ein "Ping" an die Datenbank sendet, um die Verbindung aktiv zu halten. P.ex Sie könnten eine geplante Aufgabe (cron job) erstellen, die eine leichte Abfrage sendet, wie SELECT 1;
in regelmäßigen Abständen.
MySQL-Einstellungen anpassen (Cloud-Server)
Mit einem Cloud-Server können Sie die Werte der Variablen erhöhen wait_timeout
und interactive_timeout
seit das MySQL-Menü Ihres Servers die Dauer der Verbindung zu verlängern, bevor sie geschlossen ist.