1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Ein MySQL-Fehler (server has gone away) beheben
Diese Anleitung hilft Ihnen bei der Behebung eines Fehlers vom Typ "Ungültige Abfrage: MySQL-Server ist weg
".
Vorbemerkung
- Dieser Fehler tritt oft auf, wenn eine MySQL-Verbindung offen gehalten wird, ohne Anfragen in einem Zeitintervall zu senden, nach dem die Verbindung geschlossen wird: http://dev.mysql.com/doc/refman/5.7/en/gone-away.html
- Die Variablen
wait_timeout
undinteractive_timeout
, die diese Trennung steuern, sind auf 30 Sekunden eingestellt: http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html
Lösungen
Um den Fehler "MySQL server has gone away" zu vermeiden, gibt es mehrere mögliche Ansätze:
Automatische Überprüfung und Wiederverbindung
Bevor Sie eine Abfrage ausführen, wird empfohlen, zu überprüfen, ob die MySQL-Verbindung noch aktiv ist. Wenn die Verbindung geschlossen wurde, können Sie sie automatisch wiederherstellen, bevor Sie mit Ihrer Abfrage 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 dies nicht der Fall ist, schließt das Skript die Verbindung und öffnet eine neue.
Regelmäßiges Senden von "Ping"
Eine weitere Möglichkeit besteht darin, ein Skript auszuführen, das regelmäßig einen "Ping" an die Datenbank sendet, um die Verbindung aktiv zu halten. Zum Beispiel könnten Sie einen geplanten Auftrag (cron job) erstellen, der in regelmäßigen Abständen eine leichte Abfrage, wie SELECT 1;
, sendet.
Anpassung der MySQL-Parameter (Cloud-Server)
Mit einem Cloud-Server können Sie die Werte der Variablen wait_timeout
und interactive_timeout
über das MySQL-Menü Ihres Servers erhöhen, um die Dauer der Verbindung zu verlängern, bevor sie geschlossen wird.