1213: Deadlock found when trying to get lock; try restarting transaction (Deadlock beim Anfordern einer Sperre; Transaktion neu starten)
MySQLWas 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).
Weitere Einträge zu dieser Datenbank
- 1045Access denied for user (using password: YES/NO) (Zugriff für Benutzer verweigert)
- 1062Duplicate entry for key (doppelter Eintrag für Schlüssel)
- 1205Lock wait timeout exceeded; try restarting transaction (Timeout beim Warten auf Sperre; Transaktion neu starten)
- 1040Too many connections (zu viele Verbindungen)
- 1064You have an error in your SQL syntax (Fehler in der SQL-Syntax)
- 1146Table doesn't exist (Tabelle existiert nicht)