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


12

मुझे यह त्रुटि 4 - 5 बार दैनिक मिलती है।

SQLSTATE [HY000]: सामान्य त्रुटि: 1205 लॉक प्रतीक्षा समय समाप्त हो गया; लेनदेन को पुनः आरंभ करने का प्रयास करें

इस बार मैं अपने phpmyadmin को पुनः आरंभ करता हूं लेकिन यह बार-बार होता है। मैं इस समस्या को इंगित करने में सक्षम नहीं हूं।

मैं Magento ver का उपयोग कर रहा हूँ वेबसाइट में 1.9.0.1 । मेरे पास 7000+ उत्पाद हैं। सर्वर में मेरे पास 16GB रैम है।

इस समस्या को कैसे ठीक करें?

जवाबों:


8

आपको InnoDB के लिए innodb_lock_wait_timeout सेट करके लॉक प्रतीक्षा समय मान बढ़ाने पर विचार करना चाहिए , डिफ़ॉल्ट 50 सेकंड है

mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50    |
+--------------------------+-------+
1 row in set (0.01 sec)

आप इसे /etc/my.cnfइस पंक्ति के साथ स्थायी रूप से उच्च मूल्य पर सेट कर सकते हैं

[mysqld]
innodb_lock_wait_timeout=120

और mysql को पुनरारंभ करें। यदि आप इस समय mysql को पुनः आरंभ नहीं कर सकते हैं, तो इसे चलाएं:

SET GLOBAL innodb_lock_wait_timeout = 120; 

आप इसे अपने सत्र की अवधि के लिए भी निर्धारित कर सकते हैं

SET innodb_lock_wait_timeout = 120; 

आपके प्रश्न के बाद


3
140 'या 2000' क्यों नहीं? यह वास्तव में इस मुद्दे को कैसे हल कर सकता है? इसे छिपाकर?
एलजो वलूगी

आपको एक समस्या है जिसके कारण तालिकाओं को यथोचित अपेक्षा से अधिक लॉक किया जाता है। यदि आप ऐसा करते हैं तो आप एक बार समस्या को ठीक करने के बजाय 2 मिनट प्रतीक्षा करने के लिए खुद को मजबूर करते हैं। और जैसा कि एल्जो कहता है ... जब 120 पर्याप्त नहीं है तो क्या होता है?
कार्लोस रोबल्स

7

यदि आप जिस डेटाबेस सामग्री का उपयोग करने का प्रयास कर रहे हैं, वह आपको यह संदेश दिखाई देगी (पिछली बार चलने वाली) पिछली प्रक्रिया द्वारा। MySQL लॉक को हटाने से पहले एक निश्चित समय तक प्रतीक्षा करेगा और इससे पहले कि वह उस त्रुटि को फेंके। यदि आप दिन के किसी भी सुसंगत समय के लिए इन त्रुटि संदेशों को देख रहे हैं, तो आप ट्रैक कर सकते हैं, आपको यह देखना चाहिए कि उस समय सर्वर और क्या कर रहा है - उदाहरण के लिए डेटाबेस बैकअप चल रहा है। ऐसा करने से आपको संभावनाओं को संकुचित करने में सक्षम होना चाहिए कि क्या प्रक्रियाएं लॉक का निर्माण कर सकती हैं, हालांकि यह हमेशा ऐसा नहीं होता है जो सीधे करने के लिए आगे बढ़ें - थोड़ा परीक्षण और त्रुटि होने की संभावना है।


5

इस समस्या के पीछे का कारण यह है कि यदि आप बहुत सारी कस्टम स्क्रिप्ट चला रहे हैं और डेटाबेस कनेक्शन को बंद करने का मौका मिलने से पहले स्क्रिप्ट को मार रहे हैं।

कुछ क्वेरी के निष्पादन को रोक रहा है। सबसे अधिक संभावना है कि आपकी क्वेरी में से किसी एक तालिका से किसी अन्य क्वेरी को अपडेट करना, सम्मिलित करना या हटाना। आपको यह पता लगाना है कि वह क्या है:

यदि आप CLI से MySQL में लॉगिन कर सकते हैं और निम्न कमांड चला सकते हैं

SHOW PROCESSLIST;

एक बार जब आप अवरुद्ध / नींद की प्रक्रिया का पता लगा लेते हैं, तो इसे पाएं idऔर चलाएं:

KILL {id};

अपनी प्रारंभिक क्वेरी फिर से चलाएँ।

हो सकता है कि यह लिंक आपकी मदद करेगा: SQLSTATE [HY000]: सामान्य त्रुटि: 1205 लॉक प्रतीक्षा समय समाप्त हो गया; लेनदेन Magento को पुनः आरंभ करने का प्रयास करें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.