mysql Kilitleme bekleme zaman aşımı aşıldı; işlemi yeniden başlatmayı deneyin


26

java uygulamasını kullanıyoruz, yaş için çalışıyoruz, arka ucu db MySQL, son zamanlarda mysql 5.6'ya güncellendi. Her şey yolunda gidiyordu, geçen hafta bu hatayı almaya başladı Kilitleme bekleme zaman aşımı aşıldı; hiç durmadan bitiyormuş gibi görünen işlemi yeniden başlatmayı deneyin. Bu hatayı durdurmak için ne yapacağınızı bilmiyor. neden birden bire ortaya çıkıyor

Yanıtlar:


29

İnnodb_lock_wait_timeout = 100 değişkenini kilitleme süresi için 100 saniyeye ayarlayabilirsiniz.

mysql> set innodb_lock_wait_timeout=100;

Query OK, 0 rows affected (0.02 sec)

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 100   |
+--------------------------+-------+

Zaman aşımı olan işlem, başka bir işlem tarafından tutulan tabloyu kilitlemeye çalışın. ve zaman aşımı değişkeni saniye sayısının az olmasıyla ayarlanır. bu yüzden hatayı gösterir. Komutla daha fazla durum görebilirsiniz.

SHOW ENGINE INNODB STATUS\G 

Kilitli tabloların listesini

 show open tables where in_use>0;

Şimdi bu tabloyu kullanan konuya bakınız.

  show full processlist;

şimdi o ipliği öldürebilir veya bitmesini bekleyebilirsiniz.



Bu bilgi için teşekkürler, ancak küçük güncellemelere sahip çok basit masalarda bile (tek bir alanı artırmak veya güncellemek gibi) kilitler devam ederken sorunun köküne nasıl ulaşılabilir.
Wouter

-1

MySQL sürümünü 5.0'dan küçük kullanıyorsanız, oturum veya genel kapsam için bile değişkeni değiştiremezsiniz. En iyi çözüm, trafiği yavaşlattıktan sonra sorguyu yakalamak ve yürütmektir.


2
OP, 5.6 kullandıklarını söylüyor (ki sanırım) 5.0 veya daha büyük.
RDFozz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.