gpt4 book ai didi

emacs - sql-set-sqli-buffer "there is no suitable sqli buffer"

转载 作者:行者123 更新时间:2023-12-04 03:16:13 25 4
gpt4 key购买 nike

我是 emacs 的新手,不太习惯 lisp,所以这可能是一个新错误,但我找不到解决方案。

我尝试安装 sql 模式以与我的 mysql DB 交互。

为此,我修改了 sql.el 文件以精确设置 sql-user、sql-password、sql-database、sql-server 和 sql-port 选项,并在 sql-mysql-login-params 中添加了端口

我启动 emacs 和 M-x sql-mysql

模式更改为 SQLi[MySQL]:run

我更改缓冲区,M-x find-file myfile.sql

此缓冲区处于 SQL[ANSI] 模式

然后我 C-c C-r 一条 sql 语句并出现错误“未启动 SQL 进程”

正如某处所说,我 M-x sql-set-sqli-buffer 但我有错误“没有合适的 SQLi 缓冲区”

为此,我找不到解决方案......我错过了什么?

我使用 emacs 24.2.1

编辑:当我直接在 SQLi[MySQL]:run 缓冲区中执行 select 语句时,它会按预期返回行...

其他缓冲区不应该处于 SQL[MySQL] 模式吗?

最佳答案

我认为你是对的,sql-set-sqli-buffer 没有找到合适的 SQLi 缓冲区的原因是因为它在遍历打开的缓冲区列表时考虑了 SQL 模式缓冲区的产品子类型。

这是我的 sql.el 副本中的缓冲区测试代码,它与我的 emacs 一起提供(版本 - GNU emacs 24.2.1

(defun sql-find-sqli-buffer (&optional product connection)
"Returns the name of the current default SQLi buffer or nil.
In order to qualify, the SQLi buffer must be alive, be in
`sql-interactive-mode' and have a process."
(let ((buf sql-buffer)
(prod (or product sql-product)))
(or
;; Current sql-buffer, if there is one.
(and (sql-buffer-live-p buf prod connection)
buf)
;; Global sql-buffer
(and (setq buf (default-value 'sql-buffer))
(sql-buffer-live-p buf prod connection)
buf)
;; Look thru each buffer
(car (apply 'append
(mapcar (lambda (b)
(and (sql-buffer-live-p b prod connection)
(list (buffer-name b))))
(buffer-list)))))))

主要用于测试资格的两个值是缓冲区和标识产品类型的符号。此符号作为参数传入,或默认为 sql-product 的值。似乎 sql-product,除非以其他方式设置,否则默认为 'ansi,这就是为什么您的编辑缓冲区是 SQL [ANSI]。

在尝试将 SQLi 缓冲区与查询缓冲区关联之前,您应该尝试在此缓冲区中设置产品类型(例如,使用 M-x sql-set-product )。如果您希望默认始终为 'mysql',您可以在您的初始化文件中设置它,或使用 M-x customize-variable 自定义它。

SQL 模式是相当有序的,依赖于使用正确的局部变量设置缓冲区,以便有一个有效的关联 iSQL session 。

我用来启动 iSQL 缓冲区并在我已经编辑的另一个缓冲区中进行查询的典型序列如下
  • 通过访问文件或使用 C-x b 切换到包含 SQL 文本的缓冲区。创建一个临时缓冲区。
  • 将此缓冲区设置为正确的 SQL 类型,使用 M-x sql-set-product然后在提示符处输入已知类型,例如“mysql”。
  • C-c <TAB> (绑定(bind)到 sql-product-interactive )切换到与此缓冲区关联的 iSQL 缓冲区,可能通​​过定位或创建新的 comint 进程
  • M-x sql-help 的输出可能值得一读。命令。 SQL 模式的文档非常简单。我已经弄清楚了我对它的了解很少,主要是通过阅读源代码。

    关于emacs - sql-set-sqli-buffer "there is no suitable sqli buffer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154093/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com