2012-06-03 12 views
15

बनाता है जब मैं एक टेबल ड्रॉप करने का प्रयास करता हूं, MySQL लटकता है। मेरे पास कोई अन्य खुला सत्र नहीं है। इसे कैसे हल करें? मैंने 10 घंटों तक इंतजार किया है और प्रक्रिया समाप्त नहीं हुई है।ड्रॉपिंग टेबल MySQL hang

+1

शो इंजन InnoDB स्थिति का परिणाम पोस्ट करें डेटाबेस निश्चित रूप से InnoDB के तहत है अगर – Sebas

+0

लग रहा है तालिका आप करने की कोशिश कर रहे हैं ड्रॉप पहले से ही उपयोग में है (ठीक है, मेरा मतलब है कि इसे किसी अन्य प्रक्रिया द्वारा बंद कर दिया गया है) और इसलिए यह प्रक्रिया को करने की प्रतीक्षा कर रहा है। – Rahul

+0

मैंने लॉग आउटपुट जोड़ा है। –

उत्तर

12
Waiting for table metadata lock 
drop table tableA name 

SELECT l1.lat, l1.lon, l2.zipcode FROM tableA l1, tableBl2 where l1.lat = l2.latitude and l1.lon = l2.longitude limit 10 

इस अपनी मेज है, तो आप एक अंतर्निहित गतिरोध है देखने this link

। अन्य लेनदेन को छोड़ने के लिए अन्य लेनदेन को छोड़ दें, या अन्य लेनदेन जारी करने के लिए ड्रॉप को मार दें।

आप sql_plus में KILL thread_id का उपयोग कर सकते हैं।


मैं और जानकारी जोड़ रहा हूं क्योंकि मैं एक और दिलचस्प अनुभव के साथ आया हूं।

Metadata मृत ताले समान रूप से किसी तालिका (drop, alter ...) और एक चयन कि मेज पर क्वेरी पर एक DDL आपरेशन के बीच हो सकता है।

हां, select

तो, यदि आप mysql (या php, उदाहरण के लिए pdo::fetch के साथ) में कर्सर पर लूप करते हैं, और आप उसी तालिका पर एक डीडीएल कथन चलाते हैं, तो आपको डेडलॉक मिलेगा।

इस अटैचिकल परिदृश्य का एक समाधान किसी भी चयन कथन को पूरी तरह से प्राप्त करने के बाद व्यवस्थित रूप से commit कथन के साथ अंतर्निहित ताले को जारी करना है।

+0

मैंने टेबल गिरा दिया, और अब मैं एक नई तालिका नहीं बना सकता क्योंकि मुझे त्रुटि कोड मिलता है (28): डिस्क पर फ़ाइल '..' सिंक नहीं कर सकता। मैं टेबल छोड़कर मान रहा हूं कि मेरे पास और अधिक खाली जगह होगी। –

+0

कौन सी फाइल? मुझे लगता है कि लॉक लंबे समय तक चलने के बाद से आपको सर्वर को पुनरारंभ करना चाहिए। – Sebas

+1

जब मैं एकाधिक कॉलम के साथ वास्तव में एक बड़ा बड़ा टेबल स्टेटमेंट चलाता हूं तो मुझे यह त्रुटि संदेश मिलता है। सर्वर को पुनरारंभ करके क्या आप फिर से बाहर निकलने और पुनः कनेक्ट करने का मतलब रखते हैं? आप खोज कैसे सर्वर को पुनरारंभ करते हैं? –

12

पुन: प्रारंभ हो MySQL सुंदर समाधान नहीं हो सकता है, लेकिन यह मेरे लिए काम किया:

sudo /etc/init.d/mysql restart 
mysqladmin drop YOURDATABASE 
+0

'mysql.server पुनरारंभ करें' मेरे लिए काम करता है। –