如何在Cygwin中设置psql命令?

14

我在本地机器上有一个带有Apache服务器和PostgreSQL 9.1数据库的开发站点。由于我使用的是Windows,我还安装了Cygwin。我想通过Cygwin访问数据库并进行一些查询,而不是使用pgAdmin III,但它告诉我找不到psql命令。我该如何在Cygwin中设置psql命令?


Cygwin已不再被Postgres“官方”支持(请参阅手册:“不建议在Cygwin上运行生产服务器,仅应用于在本机构建无法工作的旧版Windows上运行,例如Windows 98。”)您是否有特定原因不想使用pgAdmin或提供的本机Windows psql? - Robert H
@RobertH 其实没有特别的原因,我只是认为在cygwin中完成所有事情比保留另一个pgAdmin程序更方便。顺便问一下,你提到的本地Windows psql是什么? - chaonextdoor
@RobertH 还有一件事,实际上我可以通过cygwin使用psql访问我们生产站点的数据库。但由于我是Windows系统,我认为可能需要一些额外的设置才能访问我的本地数据库。 - chaonextdoor
我无法找到关于您情况的任何信息 - 我个人从未使用过cygwin,我只是使用pgAdmin或psql,您可能需要发布到位于http://www.postgresql.org/community/的邮件列表。 - Robert H
本地 Windows psql” 是 Postgres 安装的一部分,可以在其 bin 目录中找到。不幸的是,Postgres 没有“客户端安装”包,但您可以简单地下载 ZIP 归档文件并解压缩它。然后您就会拥有本地的 psql 客户端了。 - user330315
显示剩余3条评论
3个回答

19

截至今日,您只需在cygwin中安装postgresql-client软件包:

  • 运行你的cygwin setup.exe文件(可以多次运行以添加更多软件包);
  • 在搜索框中键入postgresql,选择postgresql-client,然后按“下一步”进行安装。

输入图像描述

现在您可以打开Cygwin终端并键入psql来运行!

输入图像描述


13

我发现在Windows上最好的Cygwin组合是普通的Windows Postgres安装和Cygwin psql。

Cygwin psql(以及其他命令行工具)可以相当容易地从源代码编译。以下是9.2.4版本的步骤:

$ wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2
$ tar xjf postgresql-9.2.4.tar.bz2
$ cd postgresql-9.2.4/
$ ./configure
$ cd src/bin/psql
$ make

这将创建一个与Cygwin兼容的psql.exe二进制文件。然而,默认情况下,它会尝试使用Unix套接字连接到本地实例,而不是TCP。因此,请使用-h指定主机名并强制使用TCP,例如:

$ ./psql -h localhost -U postgres

将此psql.exe文件移动到您的路径某个位置(例如~/bin),并可能包装在脚本中以添加“-h localhost”选项,以便在未提供其他参数时方便使用。

源代码可以修改以更改默认值,但这需要实际工作;)


-1

如果我理解你的问题正确,你正在运行cygwin,因为你想通过bash和psql在Windows上运行对PostgreSQL的查询,是吗?

Cygwin可以从bash运行Windows二进制文件,因此安装本机Windows版本并确保psql.exe在PATH中。如有必要,您可以复制可执行文件。

没有必要安装本机Cygwin版本的PostgreSQL。只需使用现有的psql工具,并确保您可以访问Windows本机的psql.exe。


1
Windows版的psql使用Windows控制台功能;Cygwin在类似Console2的终端中运行最佳,但不支持Windows控制台API。因此,psql与Cygwin的兼容性不佳。需要的是一个Cygwin构建的客户端工具,如psql。 - Barry Kelly

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