【发布时间】:2010-09-05 23:18:54
【问题描述】:
我一直在使用 Emacs 的 sql 交互模式与 MySQL db 服务器对话并开始享受它。开发人员在新的非默认端口号上设置了另一个数据库,但我不知道如何使用 sql-mysql 访问它。
当我尝试连接数据库时如何指定端口号?
如果 Emacs 可以提示我输入端口号,如果我不指定就使用默认值,那就更好了。有机会吗?
【问题讨论】:
我一直在使用 Emacs 的 sql 交互模式与 MySQL db 服务器对话并开始享受它。开发人员在新的非默认端口号上设置了另一个数据库,但我不知道如何使用 sql-mysql 访问它。
当我尝试连接数据库时如何指定端口号?
如果 Emacs 可以提示我输入端口号,如果我不指定就使用默认值,那就更好了。有机会吗?
【问题讨论】:
(setq sql-mysql-options (list "-P <port number>"))
【讨论】:
我找到了这个选项:
M-x customize-group
SQL
其中包括一个标记为:
Mysql Options:
如果您设置选项并保存它,您的 .emacs 中会添加一个新行:
(custom-set-variables
'(sql-mysql-options (quote ("-P ???"))))
(显然,您应该使用实际的端口号。)
我使用 XEmacs,所以你的里程可能会有所不同。
【讨论】:
在挖掘了sql.el文件后,我发现了一个变量,可以让我在尝试创建连接时指定一个端口。
此选项是在 GNU Emacs 24.1 中添加的。
sql-mysql-login-params
连接 MySQL 所需的登录参数列表。
我将此添加到我的 Emacs 初始化文件中:
(setq sql-mysql-login-params (append sql-mysql-login-params '(port)))
默认端口为 0。如果您想将其设置为默认 MySQL 端口,您可以自定义 sql-port
(setq sql-port 3306) ;; default MySQL port
在 GNU Emacs 24.1 中,所有流行的 RDMS 系统都有一个 sql-*-login-params 变量。 sql-port 用于 MySQL 和 PostreSQL
【讨论】:
(add-to-list 'sql-postgres-login-params '(port :default 5432)) 之类的构造(注意 :default 标记)。你应该在add-to-list之前添加(require 'sql),否则你会得到错误“符号的变量值是无效的:sql-mysql-login-params”
(with-eval-after-load "sql"... 中,这样只会在实际加载 sql 包时执行代码