假设您已经在Emacs中打开了一个* SQL *缓冲区,该缓冲区已连接到特定的服务器和数据库。现在,您的目的是连接到不同的服务器和数据库,同时保持其他SQL缓冲区进程处于活动状态。
如何在不删除原始SQL缓冲区的情况下创建新的* SQL *缓冲区进程?可以这样做吗?有没有办法改变现有缓冲区的连接信息?
答案 0 :(得分:8)
运行:
M-x sql-rename-buffer
在连接的*SQL*
缓冲区上,将在当前连接后重命名当前缓冲区。所以:
*SQL*
变为:
*SQL user/database*
然后你可以这样做:
M-x sql-mysql
或者无论你的DB风格如何创建另一个SQL缓冲区。
答案 1 :(得分:2)
稍作简化,您可以这样做:
(add-hook 'sql-interactive-mode-hook 'sql-rename-buffer)
(即,您不需要lambda
)。
答案 2 :(得分:1)
此外,如果像我这样的人喜欢另一种连接方式, 这是我的。 这就是我的sql缓冲区的名称:“driver:// user @ server / database”
(defun sql-make-alternate-buffer-name ()
(concat (concat (prin1-to-string sql-interactive-product) "://")
(if (string= "" sql-user)
(if (string= "" (user-login-name))
()
(concat (user-login-name) "/"))
(concat sql-user "@"))
(concat sql-server "/")
(if (string= "" sql-database)
(if (string= "" sql-server)
(system-name)
sql-server)
sql-database)))
在SQL-interactive-mode中创建的
SQL 缓冲区,它运行sql-interactive-mode-hook, 所以不需要手动运行sql-rename-buffer
(add-hook 'sql-interactive-mode-hook
(lambda () (sql-rename-buffer)))