2013-01-04 19 views
9

मैं emacs के लिए नया हूं और lisp के लिए बहुत उपयोग नहीं किया जाता है, इसलिए यह शायद एक नई त्रुटि है लेकिन मुझे समाधान नहीं मिल रहा है।sql-set-sqli-buffer "कोई उपयुक्त sqli buffer नहीं है"

मैं अपने mysql डीबी के साथ बातचीत करने के लिए एसक्यूएल मोड स्थापित करने का प्रयास करता हूं।

ऐसा करने के लिए, मैंने sql.el फ़ाइल को एसक्यूएल-उपयोगकर्ता, एसक्यूएल-पासवर्ड, एसक्यूएल-डेटाबेस, एसक्यूएल-सर्वर, और एसक्यूएल-पोर्ट विकल्प को सटीक करने के लिए संशोधित किया, एसक्यूएल-एमएसक्यूएल-लॉगिन में बंदरगाह जोड़ा -params

मैं Emacs और MX एसक्यूएल-mysql

SQLi के मोड परिवर्तन [MySQL] का शुभारंभ:

मैं बफर बदलने चलाने, MX लगता है फ़ाइल myfile.sql

यह बफर है एसक्यूएल [एएनएसआई] मोड में

तब मैं प्रतिलिपि सीआर एक एसक्यूएल बयान और त्रुटि है "नहीं एसक्यूएल प्रक्रिया शुरू कर दिया"

के रूप में कहीं कहा, मैंने MX एसक्यूएल-सेट SQLI-बफर लेकिन मैं त्रुटि है

"कोई उपयुक्त SQLi बफर नहीं है"

इसके लिए, मुझे समाधान नहीं मिल रहा है ... मुझे क्या याद आया?

मैं Emacs का उपयोग 24.2.1

संपादित करें: जब मैं SQLi [MySQL] में सीधे-चुने बयान निष्पादित करें: रन बफर, यह पंक्तियाँ रिटर्न की उम्मीद के रूप में ...

अन्य नहीं करना चाहिए बफर एसक्यूएल [MySQL] मोड में हो?

उत्तर

15

मुझे लगता है कि आप काफी सही हैं, कारण है कि SQL-set-sqli-buffer उपयुक्त SQLi बफर नहीं ढूंढ रहा है क्योंकि यह सूची के माध्यम से चलते समय SQL-मोड बफर का उत्पाद उप प्रकार लेता है खुले बफर जीएनयू Emacs 24.2.1

(defun sql-find-sqli-buffer (&optional product connection) 
    "Returns the name of the current default SQLi buffer or nil. 
In order to qualify, the SQLi buffer must be alive, be in 
`sql-interactive-mode' and have a process." 
    (let ((buf sql-buffer) 
     (prod (or product sql-product))) 
    (or 
    ;; Current sql-buffer, if there is one. 
    (and (sql-buffer-live-p buf prod connection) 
      buf) 
    ;; Global sql-buffer 
    (and (setq buf (default-value 'sql-buffer)) 
      (sql-buffer-live-p buf prod connection) 
      buf) 
    ;; Look thru each buffer 
    (car (apply 'append 
       (mapcar (lambda (b) 
          (and (sql-buffer-live-p b prod connection) 
           (list (buffer-name b)))) 
         (buffer-list))))))) 

दो मानों मुख्य रूप से पात्रता हैं परीक्षण करने के लिए प्रयोग किया जाता है के लिए इस्तेमाल किया -

यहाँ sql.el की मेरी नकल है, जो मेरी Emacs (संस्करण के साथ भेज दिया से बफर के परीक्षण के लिए कोड है एक बफर और उत्पाद प्रकार की पहचान करने वाला प्रतीक। यह प्रतीक एक तर्क के रूप में पारित किया गया है, या एसक्यूएल-उत्पाद के मूल्य पर डिफ़ॉल्ट है। ऐसा लगता है कि एसक्यूएल-उत्पाद, जब तक किसी अन्य तरीके से सेट नहीं किया जाता है, तो 'ansi' क्यों आपका संपादन बफर एसक्यूएल [एएनएसआई] है।

आपको इस बफर में उत्पाद प्रकार सेट करने का प्रयास करना चाहिए (उदाहरण के लिए M-x sql-set-product) क्वेरी बफर के साथ एक एसक्यूएल बफर को जोड़ने की कोशिश कर रहा है। यदि आप डिफ़ॉल्ट रूप से 'mysql' होना चाहते हैं तो आप इसे अपनी init फ़ाइल में सेट कर सकते हैं, या इसे M-x customize-variable

SQL-मोड सही स्थानीय चर के साथ बफर सेट अप करने पर काफी ऑर्डर निर्भर है एक काम कर रहे iSQL सत्र काम कर रहे हैं।

एक ठेठ अनुक्रम मैं एक बफर मैं पहले से ही संपादन कर रहा हूँ के रूप में

  1. उस में एसक्यूएल पाठ के साथ एक बफर करने के लिए स्विच का अनुसरण करता है में एक प्रश्न के साथ एक iSQL बफर आरंभ करने के लिए उपयोग करते हैं, शायद एक फ़ाइल पर जाकर, या एक अस्थायी बफर बनाने के लिए C-x b का उपयोग कर।
  2. M-x sql-set-product के साथ इस बफर को सही SQL प्रकार में सेट करने के लिए सेट करें और उसके बाद एक ज्ञात प्रकार दर्ज करें, जैसे प्रॉम्प्ट पर "mysql"।
  3. C-c <TAB> (sql-product-interactive करने के लिए बाध्य) साधते, इस बफर से जुड़े एक iSQL बफर करने के लिए स्विच करने के लिए संभावित रूप से पता लगाने के लिए या एक नया comint प्रक्रिया

यह शायद M-x sql-help आदेश के उत्पादन में पढ़ने लायक है बनाने के द्वारा। एसक्यूएल-मोड के लिए प्रलेखन बहुत हल्का है। मैंने यह पता लगाया है कि ज्यादातर स्रोत को पढ़ने से मुझे इसके बारे में क्या पता है।

+0

उत्तर के लिए धन्यवाद। मैं केवल एक एक्स-एक्स एसक्यूएल-मोड को एक बफर पर सक्षम करने के लिए उपयोग करता था जिसे मैं सी-एक्स बी के साथ बनाऊंगा, और यह सही काम करेगा। अब मुझे एम-एक्स एसक्यूएल-मोड आरईटी एम-एक्स एसक्यूएल-सेट-उत्पाद आरईटी "पोस्टग्रेस" आरईटी है। संभवत: एसएसीएल-फाइ-एसक्ली-बफर कोड Emacs 24 में बदल गया है। – felideon

+0

वास्तव में, जब भी मैं सी-सी सी-सी की कोशिश करता हूं, तब भी मुझे मिनी-बफर में "कोई SQL प्रक्रिया प्रारंभ नहीं हुई" त्रुटि मिलती है। :/ – felideon

+0

एसक्यूएल-पोस्टग्रेस एसक्यूएल बफर पहले से ही चल रहा है? मुझे लगता है कि SQL मोड शायद emacs 24 के लिए थोड़ा सा बदल गया है, क्योंकि मैं थोड़ी देर के बाद थोड़ा सा उपयोग करने के लिए लौट आया हूं, और यह थोड़ा क्रैंकियर लगता है। क्या मेरा 1-2-3 उदाहरण आपके लिए काम नहीं करता है (mysql के लिए पोस्टग्रेज़ को प्रतिस्थापित करता है)? – cms

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

  • कोई संबंधित समस्या नहीं^_^