2012-03-20 16 views
25

http://dev.mysql.com/doc/refman/5.0/en/internal-locking.htmlथ्रेड खो जाने पर अनलॉकिंग टेबल

निम्नलिखित दस्तावेज से निकाला गया है।

mysql> LOCK TABLES real_table WRITE, temp_table WRITE; 
mysql> INSERT INTO real_table SELECT * FROM temp_table; 
mysql> DELETE FROM temp_table; 
mysql> UNLOCK TABLES; 

मेरा प्रश्न है कि अगर मैं खोल स्क्रिप्ट कोड में इस तर्क का उपयोग, और अगर धागा खो दिया है (नहीं मारा) से पहले यह तक पहुँचता है "टेबल अनलॉक" है बयान, मुझे कैसे पता चलेगा कि कुछ तालिकाओं बंद हैं और मैं मैन्युअल रूप से टेबल अनलॉक कैसे करूं?

+0

क्या आपने इसके बजाय लेनदेन का उपयोग करने पर विचार किया है? http://stackoverflow.com/questions/4226766/mysql-transactions-vs-locking-tables – GordonM

उत्तर

19

मुझे कैसे पता चलेगा कि कुछ तालिकाओं को बंद कर दिया गया है?

लॉक टेबल देखने के लिए आप SHOW OPEN TABLES कमांड का उपयोग कर सकते हैं।

मैं मैन्युअल रूप से तालिकाओं को अनलॉक कैसे करूं?

आप सत्र ID कि टेबल बंद कर दिया पता है - 'का चयन CONNECTION_ID()', तो आप KILL आदेश सत्र समाप्त और टेबल अनलॉक करने के लिए चला सकते हैं।

+2

अगर मुझे सत्र आईडी और टर्मिनल लॉक नहीं किया गया है तो टर्मिनल खुला नहीं है, तो? – shantanuo

+2

लॉकिंग टेबल से पहले WAIT_TIMEOUT अवधि सेट करने का प्रयास करें (उदा। SET WAIT_TIMEOUT = 120;)। यह निर्दिष्ट अवधि के बाद स्वचालित रूप से उस कनेक्शन को बंद करने में मदद करेगा। – Devart

76

यहाँ मैं क्या MySQL

में

1 कुछ बंद कर दिया तालिकाओं लिए अनलॉक बल है) MySQL

mysql -u your_user -p 

2 दर्ज करें) चलो बंद कर दिया तालिकाओं

mysql> show open tables where in_use>0; 

3) की सूची देखने के है आइए वर्तमान प्रक्रियाओं की सूची देखें, उनमें से एक आपकी तालिका को लॉक कर रहा है

mysql> show processlist; 

4) के इन प्रक्रियाओं

mysql> kill put_process_id_here; 
+0

बहुत उपयोगी! धन्यवाद! –

+2

किसी भी तरह से मैंने प्रक्रिया सूची में कुछ भी दिखाए बिना किसी तालिका को लॉक करने में कामयाब रहा है (सोते कनेक्शन के अलावा) ... – Kevin

+1

यदि आपकी प्रक्रिया पूरी तरह से गायब है लेकिन आपको लॉक टेबल के बारे में शिकायतें मिल रही हैं: बस mysqld को पुनरारंभ करें। मेरे लिए, यह "सेवा mysqld पुनरारंभ" था –

2

अगली कड़ी प्रो के साथ में से एक को मार डालते हैं:

पुन: प्रारंभ हो एप्लिकेशन मेरी टेबल अनलॉक किया गया। यह सत्र कनेक्शन रीसेट करता है।

NOTE: I was doing this for a site on my local machine.

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

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