windows - 如何启动psql.exe

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

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

psql: could not connect to server: Permission denied (0x0000271D/10013)
Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? FATAL: password authentication failed for user "User"

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

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

(W10 Prof 64 位英文版)

第二种策略:

在“开始”菜单中,有一个条目“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".

从那里,我收到关于控制台代码页的警告,该代码页与 Windows 代码页不同,但随后我收到 psql 提示符

postgres=#

哪个有效。

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

安装后,我创建了一个密码为“a”的 super 用户“postgres”,而不是用户“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/

相关文章:

c++ - 在 C++ 中线程化 for 循环

自定义工具提示格式

c - 对话框不工作 - win32 api

postgresql - 在 Postgresql 中动态创建 TEMP TABLE 并在 FOR 循环中选择相同的表。但是在 PIPE 符号附近出现错误

postgresql - PostgreSQL 的默认用户名和密码是什么?

python - 在 fabric 脚本的 psql 命令中转义引号

ruby-on-rails - Rails/Postgres 连接问题(psql 和 pg 工作正常)

java - 为什么我的 java ping 方法只在我的电脑上有效? (Windows机器已测试)

postgresql - 如何以非交互方式为 'psql' 指定密码?

postgresql - psql 总是要求凭据