我是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 In PostgreSQL why does command line window disappear when I press Enter after entering my password?一致,我现在而不是直接运行psql.exe,而是先打开一个通用(Windows)命令窗口,然后在该通用命令窗口中运行psql.exe。然后输入密码,然后按Enter。

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



这对应于上面引用的Q/A中描述(但未解决)的问题。该论坛上的其他线程re pg password失败,涉及Linux/过时的密码/更改密码后的新密码。

据说在其他线程中,这个问题是在Windows中,存在一个文件pgpass.conf。我找到一个帮助文件libpq-pgpass.html,该文件还说,在我的系统上,没有这样的文件pgpass.conf(除上述html文件外,其他没有“pgpass”的文件)。

(W10教授64位英语)

第二种策略:

在开始菜单中,有一个条目“PostgreSQL”;在此之下-输入可用-有一个子条目“SQL Shell(psql)”;所以我尝试了

仅从那里,我得到Windows cmd窗口,带有“psql 10.1”和(在[]中,这显然是默认值):



从那里,我收到与Windows代码页不同的“控制台代码页”警告,但随后出现psql提示

postgres=#

哪个可行。

另一方面,使用上述第一种策略,我只得到“Password:”,然后在输入真实密码(即“a”)之后,出现“FATAL”错误“用户A的密码验证失败” 。

安装后,我创建了一个 super 用户“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”” 。

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

最佳答案

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

运行“C:\Program Files\PostgreSQL\10\scripts\runpsql.bat”

然后,您将获得一个通用的Windows命令窗口,该窗口询问您正确的问题(请参见上文),并在正确回答后为您提供psql命令提示符。

关于windows - 如何启动psql.exe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47606648/

10-14 04:47