Büyük bir sorguyu henüz öldürdüyseniz, rollback
. Öldürülen sorgu geri alınmadan önce başka bir sorgu çıkarırsanız, kilit zaman aşımı hatası alabilirsiniz. Bana böyle oldu. Çözüm sadece biraz beklemekti.
Detaylar:
Yaklaşık 1 milyon satırdan yaklaşık 900.000'i kaldırmak için bir DELETE sorgusu yayınladım.
Bunu yanlışlıkla çalıştırdım (satırların yalnızca% 10'unu kaldırır):
DELETE FROM table WHERE MOD(id,10) = 0
Bunun yerine (satırların% 90'ını kaldırır):
DELETE FROM table WHERE MOD(id,10) != 0
Satırların% 90'ını değil,% 90'ını kaldırmak istedim. Bu yüzden MySQL komut satırındaki işlemi, şimdiye kadar silmiş olduğu tüm satırları geri alacağını bilerek öldürdüm.
Sonra hemen doğru komutu çalıştırdım ve lock timeout exceeded
kısa süre sonra bir hata aldım . Kilit aslında rollback
arka planda hala öldürülen sorgu olabilir olduğunu fark ettim . Bu yüzden birkaç saniye bekledim ve sorguyu yeniden çalıştırdım.