MySQL Server ist verschwunden: Eintauchen in das Rätsel „Allgemeiner Fehler: 2006“
Bei der Durchführung von Masseneinfügungen in eine MySQL-Datenbank wird die Der gefürchtete Fehler „SQLSTATE[HY000]: Allgemeiner Fehler: 2006 MySQL-Server ist verschwunden“ kann auftauchen. Dieses scheinbar schwer fassbare Problem behindert die reibungslose Ausführung von Datenbankvorgängen. Um seine Geheimnisse zu lüften, begeben wir uns auf eine Reise, um diesen kryptischen Fehler zu verstehen und mögliche Lösungen zu erkunden.
Enthüllung der verborgenen Ursache: Das wait_timeout
Der „MySQL-Server hat Der Fehler „Weggegangen“ ist häufig auf eine Zeitüberschreitungsbeschränkung zurückzuführen. Konkret stammt es von der MySQL-Variablen namens wait_timeout. Diese Variable bestimmt die Zeit (in Sekunden), die MySQL geduldig auf Client-Aktivität wartet, bevor die Verbindung beendet wird.
Standardmäßig ist wait_timeout auf gemeinsam genutzten Hosts auf 30 Sekunden eingestellt. Wenn jedoch ein Datenbankvorgang dieses Zeitlimit überschreitet, wird die Verbindung abrupt beendet, was zu dem oben genannten Fehler führt.
Problemlösung: Wait_timeout anpassen
Um dieses Problem zu beheben Bei diesem Problem müssen wir die Wartezeit verlängern, um sie an die Dauer unseres Datenbankvorgangs anzupassen. Dies kann erreicht werden, indem die Abfrage „SET session wait_timeout=28800“ ausgegeben wird, die den wait_timeout für die aktuelle Sitzung auf 28800 Sekunden (8 Stunden) setzt.
Zusätzliche Überlegungen: Interaktives Timeout
In bestimmten Szenarien müssen Sie möglicherweise neben wait_timeout auch die Variable Interactive_timeout ändern. Diese Variable steuert die maximale Dauer für inaktive interaktive Verbindungen. Wenn Interactive_Timeout niedriger ist als die Ausführungszeit des Vorgangs, wird die Verbindung abrupt geschlossen, was zum gleichen Fehler führt.
Implementierung: PHP-Code
So implementieren Sie diese Lösung in PHP, verwenden Sie das folgende Codebeispiel:
<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "<pre class="brush:php;toolbar:false">"; var_dump($results); echo ""; $results = $db->query("SET session wait_timeout=28800", FALSE); // UPDATE - this is also needed $results = $db->query("SET session interactive_timeout=28800", FALSE); $results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "
"; var_dump($results); echo "";
Bevor Sie Ihren Datenbankvorgang ausführen, fügen Sie diese Zeilen zu Ihrem PHP-Skript hinzu, um die Timeout-Einstellungen anzupassen. Dadurch kann der Vorgang abgeschlossen werden, ohne dass der Fehler „MySQL-Server ist verschwunden“ auftritt.
Das obige ist der detaillierte Inhalt vonWarum meldet mein MySQL-Server ständig „Allgemeiner Fehler: 2006 MySQL-Server ist nicht mehr verfügbar“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!