बनाता है जब मैं एक टेबल ड्रॉप करने का प्रयास करता हूं, MySQL लटकता है। मेरे पास कोई अन्य खुला सत्र नहीं है। इसे कैसे हल करें? मैंने 10 घंटों तक इंतजार किया है और प्रक्रिया समाप्त नहीं हुई है।ड्रॉपिंग टेबल MySQL hang
उत्तर
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
कथन के साथ अंतर्निहित ताले को जारी करना है।
मैंने टेबल गिरा दिया, और अब मैं एक नई तालिका नहीं बना सकता क्योंकि मुझे त्रुटि कोड मिलता है (28): डिस्क पर फ़ाइल '..' सिंक नहीं कर सकता। मैं टेबल छोड़कर मान रहा हूं कि मेरे पास और अधिक खाली जगह होगी। –
कौन सी फाइल? मुझे लगता है कि लॉक लंबे समय तक चलने के बाद से आपको सर्वर को पुनरारंभ करना चाहिए। – Sebas
जब मैं एकाधिक कॉलम के साथ वास्तव में एक बड़ा बड़ा टेबल स्टेटमेंट चलाता हूं तो मुझे यह त्रुटि संदेश मिलता है। सर्वर को पुनरारंभ करके क्या आप फिर से बाहर निकलने और पुनः कनेक्ट करने का मतलब रखते हैं? आप खोज कैसे सर्वर को पुनरारंभ करते हैं? –
पुन: प्रारंभ हो MySQL सुंदर समाधान नहीं हो सकता है, लेकिन यह मेरे लिए काम किया:
sudo /etc/init.d/mysql restart
mysqladmin drop YOURDATABASE
'mysql.server पुनरारंभ करें' मेरे लिए काम करता है। –
शो इंजन InnoDB स्थिति का परिणाम पोस्ट करें डेटाबेस निश्चित रूप से InnoDB के तहत है अगर – Sebas
लग रहा है तालिका आप करने की कोशिश कर रहे हैं ड्रॉप पहले से ही उपयोग में है (ठीक है, मेरा मतलब है कि इसे किसी अन्य प्रक्रिया द्वारा बंद कर दिया गया है) और इसलिए यह प्रक्रिया को करने की प्रतीक्षा कर रहा है। – Rahul
मैंने लॉग आउटपुट जोड़ा है। –