MySQL-Tabellensperren ohne Server-Neustart auflösen
Der Fehler „Wartezeit für Sperre überschritten; versuchen Sie, die Transaktion neu zu starten“ wird oft fälschlicherweise so interpretiert, dass ein Neustart des Servers erforderlich ist. Dieses Sperrproblem kann jedoch auch ohne explizite Transaktionen auftreten. Lassen Sie uns die Grundursache untersuchen und eine Lösung zur Freigabe der betroffenen Tabellen anbieten.
Der Fehler weist auf eine Sperre hin, die eine MySQL-UPDATE
-Anweisung verhindert. Auch ohne das Initiieren einer Transaktion kann MySQL aufgrund impliziter Transaktionen oder Hintergrundprozesse Sperren beibehalten.
Um dieses Problem zu beheben, besteht eine direkte (wenn auch potenziell riskante) Methode darin, die Tabelle gewaltsam zu entsperren:
<code class="language-sql">mysql -u your_user -p</code>
<code class="language-sql">mysql> show open tables where in_use > 0;</code>
Dies zeigt aktuell gesperrte Tabellen an.
<code class="language-sql">mysql> show processlist;</code>
Hier werden aktive Prozesse angezeigt. Identifizieren Sie die Prozesse, die die Zieltabelle(n) sperren.
<code class="language-sql">mysql> kill <process_id>;</code>
Ersetzen Sie <process_id>
durch die ID des Schließvorgangs.
Dadurch werden die Tabellen zwangsweise entsperrt und die UPDATE
-Anweisung aktiviert. Entscheidend ist, dass diese Methode das Risiko einer Datenbeschädigung birgt und nur eine vorübergehende Lösung zur Behebung des zugrunde liegenden Anwendungsproblems sein sollte.
Das obige ist der detaillierte Inhalt vonWie entsperre ich gesperrte MySQL-Tabellen, ohne den Server neu zu starten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!