DBAtlas · Atlas für Datenbankbetrieb

1213: Deadlock found when trying to get lock; try restarting transaction (Deadlock beim Anfordern einer Sperre; Transaktion neu starten)

MySQL

Was bedeutet das?

InnoDB hat einen Deadlock erkannt, bei dem zwei oder mehr Transaktionen gegenseitig auf ihre Sperren warten, und den Zyklus durch Rollback einer der Transaktionen aufgelöst.

Ursache

Zeilensperren in unterschiedlicher Reihenfolge, Updates derselben Zeilen über Kreuz, breite gesperrte Zeilenbereiche (Gap Locks) wegen fehlender Indizes oder Konflikte bei Foreign-Key-Prüfungen.

Lösung

Zeige die Details des letzten Deadlocks an: SHOW ENGINE INNODB STATUS (Abschnitt LATEST DETECTED DEADLOCK). Greife in allen Transaktionen in derselben Reihenfolge auf Zeilen/Tabellen zu und halte Transaktionen kurz. Verkleinere den gesperrten Bereich durch passende Indizes. Fange die zurückgesetzte Transaktion in der Anwendung ab und wiederhole sie (Retry-Logik).

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank