DBAtlas · Veritabanı operasyon atlası

1213: Deadlock found when trying to get lock; try restarting transaction

MySQL

Ne demek?

InnoDB, iki veya daha fazla transaction'ın birbirinin lock'unu beklediği deadlock'u tespit etti ve transaction'lardan birini geri alarak döngüyü kırdı.

Neden olur?

Row lock'larının farklı sıralarda alınması, aynı satırların çapraz güncellenmesi, index eksikliği nedeniyle geniş satır aralıklarının (gap lock) kilitlenmesi veya foreign key kontrolleri sırasında oluşan çakışmalar.

Nasıl çözülür?

Son deadlock ayrıntısını görün: SHOW ENGINE INNODB STATUS (LATEST DETECTED DEADLOCK bölümü). Tüm transaction'larda satır/tablolara aynı sırada erişin, transaction'ları kısaltın. Uygun index'ler ekleyerek kilitlenen aralığı daraltın. İptal edilen transaction'ı uygulamada yakalayıp yeniden deneyin (retry mantığı).

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar