अचानक हम इस तरह के रूप में सक्रिय रिकॉर्ड के माध्यम से ताला त्रुटियों हो रही है (संबंधित कोड में कोई परिवर्तन के बिना):मैं रेल के साथ MySQL लॉक टाइमआउट त्रुटियों का निवारण कैसे कर सकता हूं?
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: UPDATE `items` SET `state` = 'reserved', `updated_at` = '2012-09-15 17:58:21' WHERE `items`.`id` = 248220
और
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded;
try restarting transaction: DELETE FROM `sessions` WHERE `sessions`.`id` = 41997883
हम में हमारे अपने लेन-देन नहीं कर रहे हैं या तो इन मॉडलों में से, इसलिए केवल लेन-देन रेल में बने होते हैं। यातायात या अनुरोध मात्रा में वृद्धि नहीं हुई है।
इन त्रुटियों को जब एक 'नई' क्वेरी एक बंद मेज पर चलने की कोशिश करता है और इंतजार करना पड़ता है दिखाई देते हैं, हम कैसे देख पा रहे हैं क्या इसके लिए इंतज़ार कर रहा है? हम कैसे पता लगा सकते हैं कि हमारे कोड का कौन सा हिस्सा प्रश्न जारी कर रहा है जो विस्तारित अवधि के लिए तालिकाओं को लॉक करता है?
जहां हम देख सकते हैं या यह कैसे के कारण की जांच करने के लिए पर कोई भी विचार?
तुम इतनी तरह की खाई को लॉक को निष्क्रिय करने के दृष्टिकोण के लिए जा रहा कोशिश कर सकते: innodb_locks_unsafe_for_binlog = 1, यह कुछ प्रेत रिकॉर्ड हालांकि कारण हो सकता है। इसके बारे में अधिक [यहां] पढ़ें (http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_locks_unsafe_for_binlog) – Yarneo
क्या अंतर्निहित डीबी इंजन है? यदि इसका आईएनएनओडीबी आप 'innodb status show' पोस्ट कर सकता है? – ethrbunny
दिखाएं इंजन INNODB स्थिति https://gist.github.com/3758910 – chrishomer