방금 이전 MySQL 클라이언트에서 다음으로 업그레이드했습니다.mariadb-클라이언트-10.0.21-3아치 리눅스에서. 업그레이드 후 Emacs 기능을 사용할 sql-mysql
때 더 이상 프롬프트가 표시되지 않습니다 .
mysql
출력의 첫 번째 줄에 나타나는 것처럼 프롬프트를 버퍼링하는 것으로 보입니다 .
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 19662
Server version: 4.1.11-standard-log
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
show tables;
MySQL [dbname]> +---------------------------------------------------------+
| Tables_in_dbname |
+---------------------------------------------------------+
...
+---------------------------------------------------------+
80 rows in set (0.02 sec)
help
MySQL [dbname]>
General information about MariaDB can be found at
http://mariadb.org
List of all MySQL commands:
...
For server side help, type 'help contents'
?
MySQL [dbname]>
General information about MariaDB can be found at
http://mariadb.org
List of all MySQL commands:
...
For server side help, type 'help contents'
exit
MySQL [dbname]> Bye
모든 경우에 "" 앞의 줄은 MySQL [dbname]>
내가 입력한 것입니다. ( ...
출력은 생략하겠습니다.)
프롬프트가 올바르게 표시되도록 하려면 어떻게 해야 합니까?-n
옵션 을 시도했지만 mysql
효과가 없었습니다. 터미널에서 실행 하면 mysql
잘 작동합니다.
답변1
특수 문자를 이스케이프하는 것을 잊었습니다. Elisp-regex의 백슬래시는 첫 번째 \가 Lisp 문자열에 의해 삼켜지기 때문에 상당히 무거워집니다. 바라보다https://www.emacswiki.org/emacs/RegularExpression
MariaDB 및 MySQL을 캡처하기 위해 구성에 다음을 추가했습니다.
(sql-set-product-feature 'mysql :prompt-regexp "^\\(MariaDB\\|MySQL\\) \\[[_a-zA-Z]*\\]> ")
답변2
.emacs에 추가하는 경우 다음 단계를 따르세요.
(require 'sql)
(sql-set-product-feature 'mysql :prompt-regexp
"^\\(MariaDB\\|MySQL\\) \\[[_a-zA-Z]*\\]> ")
sql-set-product-feature 함수는 (require 'sql)
전역적으로 사용 가능해야 합니다.
답변3
문제는 프롬프트가 예상과 다르다는 것이었습니다 sql-mode
. MariaDB는 "MySQL [dbname]>"을 기본 프롬프트로 사용하며 sql-mode
"mysql>"만 허용합니다.
따라서 한 가지 해결 방법은 "--prompt=mysql>"을 다음 항목에 추가하는 것입니다 sql-mysql-options
.
(setq sql-mysql-options '("--prompt=mysql> "))
더 나은 접근 방식은 프롬프트 스타일을 허용하도록 정규식을 수정하는 것입니다. 하지만 작동시키는 데 약간의 문제가 있으므로 누군가가 이 작업을 수행하는 방법을 게시하면 현상금을 수여하겠습니다.
나는 노력했다
(sql-set-product-feature 'mysql :prompt-regexp "^[mM]y[sS][qQ][lL][^>]*> ")
그러나 프롬프트가 "mysql>" 또는 "MySQL>"이 아니면 작동하지 않습니다.