postgresql 运行“psql”命令启动postgres时出现问题

hgtggwj0  于 2023-04-05  发布在  PostgreSQL
关注(0)|答案(4)|浏览(846)

为了运行Apache AGE,我从源代码构建了postgres 12,启用了--debug标志,并按照给出的说明进行操作。在成功构建后(在wsl 2上的ubuntu中),我尝试使用psql命令运行它,但它一直给出错误。
我试着逃跑
psql -U postgres
但这给了我以下错误
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket?
但是如果我跑了
psql -h localhost -p 5432 -U postgres
我可以连接到服务器。我已经谷歌了几个小时,但我不知道是什么问题。

e0bqpujr

e0bqpujr1#

这可能是由于多种原因造成的。除了其他答案,您可以尝试检查WSL2正在使用什么进行TCP连接。
我遇到了同样的问题运行没有一个VPN,但只要我连接到同一个VPN(在我连接到的特定位置)在安装时,它神奇地工作。
https://gist.github.com/machuu/7663aa653828d81efbc2aaad6e3b1431
描述了我在WSL2上产生的相同错误消息的问题。

e5njpo68

e5njpo682#

这是因为您尚未连接到数据库服务器。使用bin/initdb <db_cluster>创建数据库集群后,可以使用

bin/pg_ctl -D <db_cluster> -l logfile start

注意:* 为了运行这些命令,你需要在你下载PostgreSQL的目录中(该目录有许多其他的子目录,如bin,contrib,src,doc<db_cluster>等)。* 然后你可以启动psql命令行来与数据库postgres交互

bin/psql postgres
3bygqnnd

3bygqnnd3#

您当前正在使用-U标志指定用户名,但尚未提供实际用户名。要解决此问题,您可以尝试使用以下命令:

psql -h localhost -p 5432 -U <username> <database>

请将<username>占位符替换为您的系统用户名,将<database>替换为(默认值为postgres
在运行该命令之前,请确保已使用pg_ctl命令启动服务器。

pg_ctl -D <cluster_name> -l logfile start

请注意,您可以使用更简单的语句来连接到PostgreSQL数据库,而无需显式使用-h-p-U标志。这是因为,默认情况下,将连接到localhost:5432,并且用户名将是您系统的默认用户名。您可以尝试使用以下语句:

psql postgres
vm0i2vca

vm0i2vca4#

在运行psql之前,你必须先启动服务器。你可以通过运行以下命令来启动服务器。
pg_ctl -D '数据库名称' -l日志文件开始
启动服务器后,可以运行psql。
这就是为什么你会得到一个错误的主要问题。服务器在运行psql之前没有启动。

相关问题