如何启动psql.exe

pgn*_*gny 7 windows postgresql psql

我是postgresql的新手(pg).据我所知,为了与pg交互,我必须使用psql.exe.

在我的系统中,我发现psql.exe不是一次,而是两次,为什么?(C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exeC:\Program Files\PostgreSQL\10\bin\psql.exe).我试过两个,结果相同(负面).

与Q/A一致在PostgreSQL中,为什么在输入密码后按Enter键时命令行窗口会消失?我现在,而不是直接运行psql.exe,我首先打开一个通用(Windows)命令窗口,然后从这个通用命令窗口中运行psql.exe; 然后我输入了密码并输入.

在通用(Windows)命令窗口中,我现在收到消息:

psql:无法连接到服务器:权限被拒绝(0x0000271D/10013)
服务器是否在主机"localhost"(:: 1)上运行并接受端口5432上的TCP/IP连接?致命:用户"用户"的密码验证失败

这对应于上面引用的Q/A中描述的问题(但未解决).此论坛中的其他主题re pg密码失败涉及密码更改后的Linux /过期密码/新密码.

在其他线程中这里说的是这个问题,在Windows中,有一个文件pgpass.conf.我找到一个帮助文件libpq-pgpass.html,它也说,在我的系统上,没有这样的文件pgpass.conf(或除了前面提到的html文件之外的任何其他"pgpass").

(W10教授64位英语)

第二个策略:

在StartMenu中,有一个条目"PostgreSQL"; 在那下 - 由Enter提供 - 有一个子条目"SQL Shell(psql)"; 所以我试过了.

从那里,我得到Windows cmd窗口,"psql 10.1"和(在[]中显然是默认值):

Server [localhost]: I enter localhost; 
Database [postgres]: I enter postgres; 
Port [5432]: I enter 5432; 
Username [postgres]: I enter postgres; 
Password for user postgres: I enter the password which is "a".
Run Code Online (Sandbox Code Playgroud)

从那里,我得到一个警告,控制台代码页与Windows代码页不同,但我得到了psql提示符

postgres=#
Run Code Online (Sandbox Code Playgroud)

哪个有效.

另一方面,根据上面的第一个策略,我只得到"密码:"然后,在输入真实密码(即"a")之后,"致命"错误"用户密码验证失败"A"" .

安装后,我创建了一个超级用户"postgres",密码为"a",而不是用户"A"; 另一方面,我是用户"A",这是我的Windows管理员(!)帐户(我的电脑上没有其他用户)和我通常得到的cmd提示符("C:\ Users\A>"); (但正如预期的那样)如果我从提示符"C:>"输入psql.exe的完整路径,则没有不同的结果.

所以我的问题现在归结为:当从开始菜单中触发时,psql.exe正常工作,因为它问我所有问题,然后我可以正确回答(如上所述),而当从cmd的完整路径开始时窗口(两个完整的路径尝试并包含在""当然),它只是要求"密码",然后告诉我,对于一些"用户A",该密码是错误的.

此外,从开始菜单中的(运行)psql.exe的完整路径是C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PostgreSQL 10\psql.exe,如果我尝试从cmd窗口运行它,我得到"(路径)不被识别为内部或外部命令,可操作程序或批处理文件.",因为在那里,它是"SQL Shell(psql).lnk",其属性是:"目标:"C:\ Program Files\PostgreSQL\10\scripts\runpsql.bat"".

所以这是解决方案,请参阅下面的答案.

pgn*_*gny 8

您不运行某些psql.exe文件,而是运行文件C:\ Program Files\PostgreSQL\10\scripts\runpsql.bat,例如以编程方式运行,例如来自AHK:

运行,"C:\ Program Files\PostgreSQL\10\scripts\runpsql.bat"

然后你得到一个通用的Windows命令窗口,它会询问你正确的问题(见上文),并在正确回答时为你提供psql命令提示符.

  • 这不一定是真的,您可以使用原始命令运行 psql,例如 SQL 文件 `.\psql -f "CreateSequences.sql" $connstr` 或 SQL 命令 `.\psql -c $sql $connstr` (2认同)

Vao*_*sun 7

首先打开命令提示符 ( Winkey+R),然后键入C:\Program Files\PostgreSQL\10\bin\psql.exe,然后按 Enter 并键入密码。这与您psql.exe在收到错误后不关闭所做的不同。

看到错误后,请仔细阅读并在SO或google(甚至手动文档)中寻找解决方案。如果您仍然失败 - 发布另一个问题。

第三方编辑

要在 windows 下使用 psql.exe,你可能需要用postgres用户启动它

REM at the console of cmd.exe type
C:\PostgreSQL\bin>psql.exe -U postgres
REM this should result in this output
Password for user postgres:
Run Code Online (Sandbox Code Playgroud)