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