MariaDB 클라이언트는 Emacs SQL 모드에서 메시지를 표시하지 않습니다.

MariaDB 클라이언트는 Emacs SQL 모드에서 메시지를 표시하지 않습니다.

방금 이전 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>"이 아니면 작동하지 않습니다.

관련 정보