如果已存在,可以在Emacs中创建新的SQL缓冲区吗?

时间:2009-02-17 18:58:03

标签: sql emacs sql-mode

假设您已经在Emacs中打开了一个* SQL *缓冲区,该缓冲区已连接到特定的服务器和数据库。现在,您的目的是连接到不同的服务器和数据库,同时保持其他SQL缓冲区进程处于活动状态。

如何在不删除原始SQL缓冲区的情况下创建新的* SQL *缓冲区进程?可以这样做吗?有没有办法改变现有缓冲区的连接信息?

3 个答案:

答案 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)))