PG::ConnectionBad:连接到套接字"/var/run/postgresql/.s.PGSQL.5432“上的服务器失败:没有这样的文件或目录

浏览 1866关注 1回答 1得票数 0
原文

我看到的大多数都是围绕着sudo service postgresql restart展开的

我试过了,但没有用。我看到的其他答案是从/usr/local/var/psql中删除文件

问题是我在/local/中没有/var/文件夹

完全转储:

[17:51:55]  shell-ratings-backend (master)
// ?  sudo service postgresql restart
 * Restarting PostgreSQL 14 database server                 [ OK ] 
[17:52:29]  shell-ratings-backend (master)
// ?  rails db:migrate
rails aborted!
ActiveRecord::ConnectionNotEstablished: 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?
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/rails:5:in `<top (required)>'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:10:in `require'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:10:in `block in <top (required)>'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:7:in `tap'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:7:in `<top (required)>'

Caused by:
PG::ConnectionBad: 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?
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/rails:5:in `<top (required)>'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:10:in `require'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:10:in `block in <top (required)>'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:7:in `tap'
/mnt/c/Users/Alex/dev/shell-ratings-backend/bin/spring:7:in `<top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
原文
ILikeClouds提问于2021-10-20 01:22

1 个回答

高票数最新
CHAVDA MEET
回答于2021-10-20 07:12
得票数 2

该错误指出psql实用程序找不到连接到数据库服务器的套接字。您可能没有在后台运行数据库服务,或者套接字位于其他位置,或者可能需要修复pg_hba.conf。

步骤1:验证数据库是否正在运行该命令可能因您的操作系统而异。但在大多数*ix系统上,以下命令可以工作,它将在所有正在运行的进程中搜索postgres

ps -ef | grep postgres

您可以使用以下命令查看所有可用于启动postgres服务器的选项。

在postgres上,您将看到选项-D和-r分别是数据目录和日志文件名。

步骤2:如果postgres服务正在运行,请使用find来搜索套接字的位置,该位置应该在/tmp中的某个位置

sudo find /tmp/ -name .s.PGSQL.5432

如果postgres正在运行并接受套接字连接,上面应该会告诉您套接字的位置。在我的机器上,结果是:

/tmp/.s.PGSQL.5432然后,尝试使用此文件的显式位置通过psql进行连接,例如。

psql -h /tmp/ dbname

步骤3:如果服务正在运行,但您看不到套接字,但看到服务正在运行,请验证pg_hba.conf文件是否允许本地套接字。

浏览到数据目录,您应该会找到pg_hba.conf文件。

默认情况下,在文件底部附近,您应该会看到以下几行:

"local“仅适用于Unix域套接字连接。

local       all       all       trust

如果您看不到它,您可以修改该文件,并重新启动postgres服务。

页面原文内容由ILikeClouds、CHAVDA MEET提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:https://stackoverflow.com/questions/69639250复制

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com