为什么emacs找不到psql?

时间:2014-04-02 06:38:10

标签: postgresql emacs

这有点奇怪,我是从源postgresql编译的。我完全没有使用psql的问题。

$ psql -d rita
psql (9.3.2)
Type "help" for help.

rita=> 

`

但是,当我尝试在emacs上运行M-x sql-postgres时,会提示输入用户,密码,数据库和主机。但是,当我输入迷你缓冲区中的数据时,只显示:Unable to locate SQL program psql。我希望有人能告诉我如何解决这个问题,或者发生了什么。

2 个答案:

答案 0 :(得分:3)

您的psql不在标准路径上。

您可能正在设置PATH ~/.bashrc,除非您从终端启动Emacs,否则Emacs不会看到它。

解决方案是:

(setq sql-postgres-program "/usr/local/pgsql/bin/psql")

如果您愿意,可以ln -s/usr/bin

答案 1 :(得分:1)

或者,您可以将psql二进制文件的路径添加到emacs' exec-path列表中,如下所示:

 (add-to-list 'exec-path "/path/to/program")
 (setenv PATH (mapconcat 'identity exec-path ":"))

我在Mac上运行Emacs作为我的开发环境。从Dock启动emacs并不包括通过MacPorts安装的程序的路径。对于那些拥有非标准"的人来说,这将是一个标准问题。 exec路径元素并通过GUI启动Emacs。对我来说,OSX:MacPorts:/ opt / local / ...这包括psql,mysql,py-flakes等。我可以为每个附加组件设置一个变量或修改exec-path。在elisp函数推迟搜索exec-path到shell的地方需要setenv。 python模式下的C-c C-v绑定利用shell和$ PATH环境来查找py-flakes。

add-to-list 是一个简单的解决方案,它预先列出了列表的路径。可以为.emacs文件中的更复杂的路径争论提供一个案例。 YMMV。