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



我看到的大部分都是围绕着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)

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

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

ps -ef | grep postgres

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

man postgres从这里,您会看到选项-D和-r分别是数据目录&logfilename。

步骤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文件是否允许本地套接字。

浏览到datadir,您应该可以找到pg_hba.conf文件。

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

"local"仅用于Unix域套接字连接

local       all       all       trust

如果没有看到,可以修改文件,重新启动postgres服务。

最新更新