Bei der Durchführung von Massenvorgängen, wie dem Einfügen von Hunderten von Datensätzen in eine MySQL-Datenbank, kann es sein, dass Sie Es tritt der folgende Fehler auf:
[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Dieser Fehler tritt normalerweise aufgrund eines Zeitüberschreitungsproblems auf, bei dem der MySQL-Server Ihre Verbindung nach einer festgelegten Zeitspanne der Inaktivität trennt. Um dieses Problem zu beheben, konzentrieren Sie sich auf die Anpassung von zwei Haupteinstellungen:
Die Einstellung „wait_timeout“ bestimmt die Dauer (in Sekunden), die MySQL wartet, bevor eine inaktive Verbindung beendet wird. Standardmäßig ist dieser Wert in Shared-Hosting-Umgebungen auf relativ niedrige 30 Sekunden eingestellt.
Um den wait_timeout zu erhöhen, geben Sie zu Beginn Ihres Vorgangs die folgende Abfrage aus:
SET session wait_timeout=28800;
This Der Befehl setzt den wait_timeout auf 28800 Sekunden, was ungefähr 8 Stunden entspricht.
In einigen Fällen müssen Sie möglicherweise auch die Einstellung „Interactive_timeout“ anpassen. Diese Einstellung gibt die Anzahl der Sekunden an, bevor MySQL eine interaktive Verbindung beendet.
Um Interactive_Timeout zu ändern, führen Sie die folgende Abfrage aus, nachdem Sie Wait_Timeout angepasst haben:
SET session interactive_timeout=28800;
Zur Bestätigung Um sicherzustellen, dass die Einstellungen erfolgreich geändert wurden, können Sie die folgende Abfrage ausführen, bevor und nachdem Sie die Änderungen vorgenommen haben:
<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);</code>
Eine Erhöhung der Timeout-Einstellungen kann zwar das unmittelbare Problem beheben, ist aber wichtig Beachten Sie Folgendes:
Das obige ist der detaillierte Inhalt vonWie behebt man den „Allgemeinen Fehler: 2006 MySQL Server ist nicht mehr verfügbar' bei Massenvorgängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!