mysql लॉक प्रतीक्षा समय समाप्त हो गया; लेनदेन को पुनः आरंभ करने का प्रयास करें


26

हम जावा एप्लिकेशन चला रहे हैं, उम्र के लिए चल रहे हैं, बैक एंड डीबी है MySQL, हाल ही में mysql 5.6 पर अपडेट किया गया है। सब कुछ ठीक चल रहा था, पिछले सप्ताह यह त्रुटि मिलना शुरू हो गई थी ताला प्रतीक्षा समय समाप्त हो गया; लेनदेन को फिर से शुरू करने की कोशिश करें जो ऐसा लगता है कि कभी समाप्त नहीं होता है पता नहीं कि इस त्रुटि को रोकने के लिए क्या करना है। यह अचानक क्यों हो रहा है

जवाबों:


29

आप चर सेकंड में लॉक समय के लिए चर innodb_lock_wait_timeout = सेट कर सकते हैं।

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   |
+--------------------------+-------+

लेन-देन जो समयबाह्य है, तालिका को लॉक करने का प्रयास करें जो किसी अन्य प्रक्रिया द्वारा पकड़ है। और आपका टाइमआउट चर दूसरे की कम संख्या के साथ सेट किया गया है। इसलिए यह त्रुटि दर्शाता है। आप कमांड द्वारा अधिक स्थिति देख सकते हैं।

SHOW ENGINE INNODB STATUS\G 

आप द्वारा बंद तालिकाओं की सूची देख सकते हैं-

 show open tables where in_use>0;

अब वह थ्रेड देखें जो इस तालिका का उपयोग कर रहा है

  show full processlist;

अब आप उस धागे को मार सकते हैं या उसे पूरा करने की प्रतीक्षा कर सकते हैं।



इस जानकारी के लिए धन्यवाद, लेकिन कोई भी इस मुद्दे की जड़ तक कैसे पहुंच सकता है जब ताले होते रहते हैं, यहां तक ​​कि छोटे अपडेट के साथ बहुत सरल तालिकाओं पर भी (जैसे कि वेतन वृद्धि या एक क्षेत्र को अपडेट करना)।
राऊटर

-1

यदि MySQL संस्करण 5.0 से कम का उपयोग कर रहा है, तो आप सत्र या वैश्विक दायरे के लिए भी चर नहीं बदल सकते। ट्रैफ़िक धीमा होने पर क्वेरी को पकड़ने और निष्पादित करने के लिए सबसे अच्छा समाधान है।


2
ओपी कहते हैं कि वे 5.6 का उपयोग कर रहे हैं, जो (मुझे लगता है) 5.0 या अधिक है।
RDFozz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.