2013-07-09 8 views
8

मेरा कोड एक गड़बड़ है, मुझे यकीन नहीं है कि समस्या कहां है, लेकिन मुझे किसी लेनदेन या टेबल लॉकिंग के बिना डेडलॉक्स मिल रहे हैं। इसके बारे में कोई भी जानकारी मदद करेगा।लेनदेन के बिना डेडलॉक्स कैसे संभव है?

मैंने डेडलॉक्स देखा है और ऐसा लगता है कि उन्हें लेनदेन का उपयोग करके एकमात्र तरीका है।

Error Number: 1213 
Deadlock found when trying to get lock; try restarting transaction 
UPDATE `x__cf_request` SET `contact_success` = 1, `se_engine_id` = 0, `is_fresh` = 1 WHERE `id` = '28488' 

संपादित करें: डाउनवॉट्स क्यों? यह एक वैध सवाल है। यदि यह असंभव है तो बस क्यों कहें, ताकि अन्य लोग यह देख सकें कि वे इस मुद्दे पर कब भागते हैं।

+0

का उत्पादन प्रदान करने की आवश्यकता है ताकि आप लापरवाही कर रहे हों। मुझे एक समान समस्या है और आपका प्रश्न सबसे नज़दीकी है जो मैंने पाया है कि एक उत्तर की जरूरत है ... अगर आप इसे हल करते हैं तो हमें बताएं! –

उत्तर

1

इनो डीबी में प्रत्येक कथन एक संक्रमण में चलाया जाता है; बहु-कथन लेनदेन के लिए BEGIN और autocommit = 0 का उपयोग किया जाता है। ऐसा कहकर, विभिन्न लेनदेन के बीच डेडलॉक होता है।

ऐसा लगता है आप id मैदान पर सूचकांक, या एक से अधिक रिकॉर्ड नहीं है एक ही id है। यदि नहीं, तो आपके पास इंडेक्स-गैप लॉकिंग की जगह है। आगे का निदान करने के लिए, आपको SHOW ENGINE InnoDB STATUS

संबंधित मुद्दे