Mysql कमांड लाइन प्रोग्राम में कंट्रोल-सी को ठीक करें?


10

में mysqlकमांड लाइन, दबाने Control-Cकार्यक्रम रद्द हो जाएगा, और आप पार्टी में वापस लाने। में psql, पोस्टग्रेज के लिए, यह वर्तमान क्वेरी को मार देगा और psql प्रोग्राम को बंद नहीं करेगा। क्या Control-Cmysql प्रोग्राम के लिए psql शैली व्यवहार प्राप्त करने का कोई तरीका है ? मैं खुद Control-Cको आदत से दबाए रखता हूं और वापस mysql में लॉग इन करता हूं ।

Control Cमार मार नहीं करता है, और जब आप इसे दबाते हैं तो आपको लॉग आउट करता है। जो मुझे लगता है कि अच्छी बात है। Control-Cइसका मतलब है 'तुम क्या कर रहे हो बंद करो'।

जवाबों:


7

यदि आप क्वेरी निष्पादन के दौरान 5.1 में Ctrl-C दबाते हैं , तो यह निष्पादन को संदेश के साथ रोक देगा "क्वेरी निष्पादन बाधित हो गया था"

    mysql> INSERT INTO c सेलेक्ट रैंड () * 1000, sha1 (रैंड ()) FROM c;
    Ctrl + C से क्वेरी निरस्त की गई
    ERROR 1317 (70100): क्वेरी निष्पादन बाधित हो गया था

एक और Ctrl-Cप्रेस ग्राहक को मारता है।

पुराने संस्करण बुरी तरह से विचाराधीन हैं, इसलिए यदि संभव हो तो अपग्रेड करें :)

संपादित करें:

ऐसा लगता है कि इसे 5.0.25 (और 5.1.10) में जोड़ा गया था।


2
यह अभी भी बहुत मूर्ख व्यवहार है। जब आप किसी क्वेरी के दौरान CTRL + C दबाते हैं, तो उसे क्वेरी को रद्द कर देना चाहिए। जब आप तुरंत CTRL + C दबाते हैं, तो उसे कुछ नहीं करना चाहिए और MySQL से बाहर नहीं निकलना चाहिए। जब आप कुछ भी नहीं होने पर बैश प्रॉम्प्ट पर CTRL + C करते हैं, तो यह एक नई लाइन प्रिंट करता है, लेकिन मूल रूप से कुछ भी नहीं करता है।
नील

वास्तव में मैंने जो किया बल्कि यह किया कि वास्तव में psql क्या करता है: यदि आप एक क्वेरी में प्रवेश करने के लिए आधे रास्ते हैं, तो शायद पहले से ही कई लाइनों में प्रवेश किया है, और आपको लगता है कि आपने गलती की है और इसे दर्ज करना छोड़ना चाहते हैं, फिर CTRL + दबाएं C को प्रॉम्प्ट पर वापस आना चाहिए।
हार्मिक

मैं इसे स्पष्ट कर दूंगा: ctrl-C अभी भी आपको 5.5 संस्करण पर भी mysql CLI से बाहर निकालता है। एंडी का जवाब थोड़ा अस्पष्ट है (कम से कम मेरे लिए) लेकिन अगर यह आपको लगता है कि नए संस्करणों ने यह व्यवहार तय किया है तो आपको गुमराह किया गया है।
ndemou

@ndemou आप किस प्लेटफॉर्म पर हैं? मेरा जवाब RHEL5 पर परीक्षण किया गया था।
एंडी

@ ऑंडी 12.04 पर परीक्षण किया गया। आप लिख रहे हैं "लगता है जैसे इसे 5.0.25 में जोड़ा गया था"। आपको क्या लगता है कि क्या जोड़ा गया था? यह आपके उत्तर का हिस्सा है जो समझ में नहीं आएगा। नीचे मेरा जवाब भी देखिए।
ndemou

13

जैसे एंडी कहते हैं, यह बाद के संस्करणों में तय हो गया है।

पुराने संस्करणों में कोई समतुल्य कीबोर्ड शॉर्टकट नहीं है।

लेकिन आप इसे निम्नलिखित सीएलआई ध्वज के साथ होने से रोक सकते हैं:

--sigint-ignore

Ignore SIGINT signals (typically the result of typing Control-C).

पकड़ यह है कि -sigint-ign भी लंबे समय तक चलने वाले प्रश्नों को रोकने की क्षमता को हटा देता है। ओह! और प्रश्न के लिए प्रासंगिक कुछ भी बाद के संस्करण (<= 5.5) AFAICT में तय नहीं किया गया है। मेरा उत्तर देखिए
ndemou

5

यदि आप Ctrl-c का उपयोग करने के बजाय अपनी पंक्ति के अंत में एक \ c जोड़ते हैं तो आप mysql से बाहर आए बिना रेखा को मार सकते हैं।


3

संक्षिप्त उत्तर: 2014 की शुरुआत में, mysql में वर्णित व्यवहार करने का कोई तरीका नहीं है। देखें प्रासंगिक बग रिपोर्ट जहां 3 अलग अलग लोगों और dba.stackexchange में एक पृष्ठ टिप्पणी है कि यह अभी भी v5.5 में तय नहीं कर रहा है । साथ ही जहाँ तक मैं एक लंबी गुगली के बाद बता सकता हूँ कि उपयोग करने लायक कोई हल नहीं है (देखें कि क्यों --sigint- इग्नोर अच्छा नहीं है)। एंडी के उत्तर को यह उल्लेख करने के लिए संपादित किया गया था कि "ऐसा लगता है कि इसे 5.0.25 (और 5.1.10) में जोड़ा गया था।" लेकिन वह शायद तारीख के साथ टिप्पणी द्वारा गुमराह किया गया था [3 मई 2006 19:04] उपरोक्त रिपोर्ट में।

--Sigint- अनदेखा तर्क (डैन कार्ली का उत्तर देखें) वास्तव में mysql को आपको शेल में वापस छोड़ने से रोकेगा जब आप ctrl-C को मारेंगे लेकिन लंबे समय तक चलने वाले प्रश्नों को रोकने की क्षमता को भी हटा देंगे ।

यह एक तरह का प्रयोज्य बग है जो आपको चलता है :-( वास्तव में स्पष्ट और शायद इसे ठीक करना बहुत आसान है लेकिन फिर भी यह कई वर्षों के बाद है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.