2013-01-04 6 views
9

Jestem nowy dla emacsa i niezbyt używany do seplenowania, więc prawdopodobnie jest to błąd newby, ale nie mogę znaleźć rozwiązania.sql-set-sqli-buffer "nie ma odpowiedniego bufora sqli"

Próbuję zainstalować tryb sql w celu interakcji z moją bazą danych mysql.

Aby to zrobić, zmodyfikowałem plik sql.el, aby precyzyjnie określić użytkownika sql-user, sql-password, sql-database, sql-server i sql-port, dodał port w sql-mysql-login -params

ja uruchomić emacs i MX-sql mysql

zmiana trybu do SQLi [MySQL]: uruchom

zmienić bufor Mx znaleźć plik myfile.sql

bufor ten jest w trybie SQL [ANSI]

Potem Cc Kr SQL oświadczenie i mają się błąd „Nie Process SQL rozpoczęła”

Jak powiedział gdzieś, ja Mx sql-set-sqli-bufor, ale mam błąd „Nie ma odpowiedni bufor SQLi”

Za to nie mogę znaleźć rozwiązania ... Czego mi brakowało?

używam Emacs 24.2.1

edit: kiedy wykonać select bezpośrednio w [MySQL] SQLi: bufor run, zwraca wiersze zgodnie z oczekiwaniami ...

nie powinno druga buforować w trybie SQL [MySQL]?

Odpowiedz

15

Myślę, że masz rację, powodem, dla którego bufor sql-set-sqli nie znajduje odpowiedniego bufora SQLi, jest to, że bierze pod uwagę podtyp produktu w buforze w trybie SQL podczas przechodzenia przez listę otwarte bufory.

Oto kod do testowania buforowego z moją kopią sql.el, który dostarczany z moich emacs (wersja - emacsowych GNU 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))))))) 

dwie wartości stosowane do przede wszystkim do sprawdzenia kwalifikowalności Bufor i symbol identyfikujący typ produktu Symbol ten jest przekazywany jako argument lub domyślnie wartość sql-product. Wygląda na to, że sql-produkt, chyba że ustawiony w jakiś inny sposób, jest domyślnie ustawiony na 'ansi, który jest dlaczego twój bufor edycyjny to SQL [ANSI]

Powinieneś spróbować ustawić typ produktu w tym buforze (np. z M-x sql-set-product) przed próbuje skojarzyć bufor SQLi z buforem zapytania. Jeśli chcesz, aby domyślnym ustawieniem zawsze był "mysql", możesz ustawić go w pliku init lub dostosować go, korzystając z trybu M-x customize-variable

Tryb SQL jest dość uporządkowany w zależności od ustawienia bufora z odpowiednimi zmiennymi lokalnymi w celu mieć działającą powiązaną sesję iSQL.

Typowa sekwencja używać do inicjowania bufor ISQL z kwerendy w innym buforze mam już edycji jest następująco

  1. przełączyć się na bufor z tekstem SQL w nim, odwiedzając plik może, lub użycie C-x b do utworzenia tymczasowego bufora.
  2. Ustaw ten bufor na poprawny typ SQL, z M-x sql-set-product, a następnie wpisz znanego typu, na przykład "mysql" po znaku zachęty.
  3. Bicie C-c <TAB> (związany sql-product-interactive), aby włączyć bufor iSQL powiązanego z tego bufora, ewentualnie poprzez umieszczenie lub tworzenia nowego procesu COMINT

Jest to prawdopodobnie wartości odczytu wyjście polecenia do M-x sql-help. Dokumentacja trybu SQL jest bardzo lekka. Zrozumiałem to, co wiem o tym, głównie z czytania źródła.

+0

Dzięki za odpowiedź. Kiedyś byłem w stanie tylko M-x sql-mode na buforze, który utworzyłem z C-x b, i zrobiłoby to dobrze. Teraz mam do M-x sql-mode RET M-x sql-set-product RET "postgres" RET. Przypuszczalnie kod sql-find-sqli-buffer zmienił się w Emacsie 24. – felideon

+0

Właściwie to nadal daje mi błąd "No SQL process started" w mini-buforze, gdy próbuję C-c C-c. :/ – felideon

+0

nawet z już działającym buforem sql-postgres SQLi? Wydaje mi się, że tryb SQL prawdopodobnie zmienił się nieco w przypadku emacs 24, ponieważ powróciłem do używania trochę, po chwili, i wydaje się nieco bardziej nie na miejscu. Czy mój przykład 1-2-3 nie działa również dla ciebie (zastępując postgres dla mysql)? – cms

Powiązane problemy