2014-10-20 6 views
11

मैं MySQL 5.5.37 का उपयोग कर रहा हूं। रूट के रूप में, मैं एक लेनदेन को मारने की कोशिश कर रहा हूं जो कुछ तालिकाओं को लॉक कर रहा है। मैंमैं MySQL में रूट के रूप में लेनदेन को कैसे मारूं?

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G 

चलाने के लिए और उत्पादन

… 
*************************** 6. row *************************** 
        trx_id: 143E6CDE 
       trx_state: RUNNING 
       trx_started: 2014-10-20 06:03:56 
    trx_requested_lock_id: NULL 
      trx_wait_started: NULL 
       trx_weight: 2305887 
     trx_mysql_thread_id: 158360 
       trx_query: delete from event where id not in (select q.* from (select e.id FROM event e, (select object_id, max(date_processed) d from event group by object_id) o where e.object_id = o.object_id and e.date_processed = o.d) q) 
     trx_operation_state: NULL 
     trx_tables_in_use: 3 
     trx_tables_locked: 3 
      trx_lock_structs: 210634 
    trx_lock_memory_bytes: 19790264 
      trx_rows_locked: 10668793 
     trx_rows_modified: 2095253 
    trx_concurrency_tickets: 0 
     trx_isolation_level: REPEATABLE READ 
     trx_unique_checks: 1 
    trx_foreign_key_checks: 1 
trx_last_foreign_key_error: NULL 
trx_adaptive_hash_latched: 0 
trx_adaptive_hash_timeout: 10000 

मिल लेकिन जब मैं एक "मारने" बयान चलाने के लिए, मैं कोई त्रुटि मिलती है।

mysql> kill 158360; 
ERROR 1095 (HY000): You are not owner of thread 158360 

मैं इस लेनदेन को MySQL से कैसे साफ़ करूं?

उत्तर

16

आप हमेशा अपना खुद का धागा मार सकते हैं, लेकिन आपको किसी और के धागे को मारने के लिए सुपर विशेषाधिकार की आवश्यकता है।

क्या आप आरडीएस पर हैं? यदि ऐसा है, तो आपके उपयोगकर्ता नाम 'रूट' होने पर भी आपके पास सुपर विशेषाधिकार नहीं है। 'रूट' नाम के बारे में बिल्कुल कुछ खास नहीं है, यह विशेषाधिकार है जो मायने रखता है।

आप चलाकर अपने विशेषाधिकारों की पुष्टि कर सकते हैं:

mysql> SHOW GRANTS; 

कैसे धागा को मारने के लिए, अगर यह आरडीएस है, आप के लिए यह करने के लिए एक प्रक्रिया rds_kill() कॉल कर सकते हैं के रूप में।

कनेक्ट MySQL

सूची की प्रक्रिया के लिए

:

SHOW PROCESSLIST; 

में आप निम्न उदाहरण के रूप में, उपयोग कर रहे हैं आरडीएस MySQL आप rds_kill() प्रक्रिया का उपयोग कर सकते

+1

वास्तव में हम आरडीएस का उपयोग कर रहे हैं। आपका समाधान पूरी तरह से काम करता है। – Dave

7

बस विधेयक जवाब पूरा करने के लिए मेरा मामला, मैं आईडी 1 9 48452 की प्रक्रिया को मारना चाहता हूं:

CALL mysql.rds_kill(1948452); 

हो गया

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