这有点奇怪,我是从源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
。我希望有人能告诉我如何解决这个问题,或者发生了什么。
答案 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。