在Windows环境下,无法识别PostgreSQL的“psql”命令。

30

看起来我已经进行了设置,我的database.yml文件中使用的是postgres,并且我可以使用pgadmin III连接数据库,但是当我尝试使用psql命令测试版本时,它说无法识别?有任何想法我应该做什么吗?

我正在使用Windows和Ruby on Rails的命令提示符。 使用一键安装程序安装的PostgreSQL 9.2 EnterpriseDB。


Pg版本?你用了哪个安装程序?Windows版本? - Craig Ringer
@CraigRinger 根据您下面的回答,它是企业版,版本号为9.2,但当我将psql.exe添加到我的路径中时,似乎仍然无法工作。 - hellomello
“Enterprise”?您是指EnterpriseDB版本吗? - Craig Ringer
@CraigRinger 是的,我做了Windows的一键安装程序包。 - hellomello
4个回答

51

假设您使用EnterpriseDB打包的PostgreSQL“一键安装程序”在Windows上安装了PostgreSQL, psql不会自动添加到 PATH,这部分原因是当人们安装多个版本的PostgreSQL时,将其添加到路径中可能会导致混淆。

您需要指定psql的完整显式路径,例如:

"%PROGRAMFILES%\Postgresql\9.2\bin\psql.exe"
或者将psql添加到用户的PATH环境变量中,参见例如这个指南

1
我需要重新启动命令提示符吗?我的路径中有这些内容:C:\PostgresSQL\9.2\;C:\PostgresSQL\9.2\bin;C:\PostgresSQL\9.2\bin\psql.exe。我关闭了提示符并重新打开,但是当我尝试输入 psql 时,它仍然无法识别? - hellomello
2
我将其放置在我的系统环境中。 - hellomello
1
@andrewliu 只有中间那个是有意义的;你不能直接将路径设置为可执行文件,也不能设置为任意父目录,路径必须包含直接父目录。通常应修改用户路径而不是系统路径;如果用户没有 PATH 变量,则添加一个。要验证它是否正确,请关闭并重新打开 cmd.exe,然后键入 echo "%PATH%"。编辑您的问题以添加结果(复制并粘贴)。 - Craig Ringer
2
@andrewliu 不是指 psql.exe 本身,而是必须设置 PATH包含 psql.exe 文件夹的路径。如果你用绝对路径运行命令呢?例如(假设你安装的 PostgreSQL 拼写错误为 PostgresSQL,与你的评论相同) "C:\PostgresSQL\9.2\bin\psql.exe"。引号是必需的。你实际上是否检查了路径?在你的安装中是否有 9.2 中间路径? - Craig Ringer
好的,我认为将它添加到用户路径而不是系统路径会起效...现在它说我的角色名称不存在...这比说它没有被引用要好。 - hellomello
显示剩余4条评论

14

打开命令行

psql --version

如果上一行没有显示psql版本,则按照以下步骤进行操作

(For Windows 7 OS)

Mycomputer->Properties->Advanced System Settings->EnvironmentVariables->Path->Edit->
(Donot remove any existing Path)
加上这个。
;C:\Program Files\PostgreSQL\9.5\bin;C:\Program Files\PostgreSQL\9.5\lib

保存它

重新打开命令提示符并重复操作

psql --version

C:\Users\rumi>psql --version

psql (PostgreSQL) 9.5.0

也适用于Windows 10!尽管我无法将pg安装到"c:\program files"文件夹中。 - Pascal
不是库,应该是 bin - majurageerthan

3
由于在您的psql路径和分号之间不应该有空格,所以这是原因,应该像这样*****;C:\Program Files\PostgreSQL\9.2\bin\
如果在******后面有空格,则无法正常工作。您可以在cmd提示符中实际输入%PATH%并查看环境变量和空格的外观。我已经为您尝试了两种情况,第一种有空格的情况出现了您提到的相同错误,而第二种没有空格的情况运行成功。

2

你需要将bin和lib路径分别设置到你的PATH环境变量中,用分号隔开:

%PROGRAMFILES%\Postgresql\9.2\bin;%PROGRAMFILES%\Postgresql\9.2\lib


也不要忘记重新打开CMD。 - Cristian E.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接