Behebung von „Wartezeitüberschreitung beim Sperren; versuchen Sie, die Transaktion neu zu starten“ für eine „stecken gebliebene“ MySQL-Tabelle
Eine MySQL-Tabelle kann „stecken bleiben“ aus verschiedenen Gründen, z. B. lang andauernden Abfragen oder nicht festgeschriebenen Transaktionen. Eine häufig damit verbundene Fehlermeldung lautet „Wartezeit für Sperre überschritten; versuchen Sie, die Transaktion neu zu starten.“
Dieses Problem kann auftreten, wenn eine Abfrage ohne eine richtige WHERE-Klausel ausgeführt wird, was zu wiederholten Aktualisierungen derselben Spalte für alle führt Zeilen in der Tabelle. Darüber hinaus können häufige Indexaktualisierungen das Problem verschlimmern.
Um dieses Problem zu beheben und die Tabelle freizugeben, müssen die blockierten Transaktionen identifiziert und beendet werden. Folgende Schritte können durchgeführt werden:
Verwenden Sie die SHOW PROCESSLIST; Befehl zum Auflisten aller laufenden Threads in der MySQL-Befehlszeilenschnittstelle oder phpMyAdmin. Identifizieren Sie alle Threads mit deutlich langen Ausführungszeiten.
Für Threads mit übermäßig langen Ausführungszeiten verwenden Sie den Befehl KILL gefolgt von die entsprechende Thread-ID. Dadurch wird die Verbindung für diesen Thread beendet. In phpMyAdmin gibt es einen praktischen „Kill“-Button, der zu diesem Zweck verwendet werden kann.
Thread 115 aus töten Geben Sie in der Befehlszeile Folgendes ein:
KILL 115;
Dadurch wird die feststeckende Transaktion beendet und die Tabelle entsperrt, sodass normale Vorgänge möglich sind Lebenslauf.
Das obige ist der detaillierte Inhalt vonWie kann das Problem „Wartezeitüberschreitung beim Sperren überschritten; versuchen Sie, die Transaktion neu zu starten' für eine „steckengebliebene' MySQL-Tabelle behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!