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

标签 ruby-on-rails postgresql

我看到的大部分内容都围绕着 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 分别是数据目录和日志文件名。

第二步:如果postgres服务正在运行 使用find查找socket的位置,应该在/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 文件。

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

“本地”仅用于 Unix 域套接字连接

local       all       all       trust

如果看不到,可以修改文件,重启postgres服务。

关于ruby-on-rails - PG::ConnectionBad:连接到套接字 "/var/run/postgresql/.s.PGSQL.5432"上的服务器失败:没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69639250/

相关文章:

ruby-on-rails - 我想要一个默认选择空白值的日期选择框

ruby-on-rails - Rspec View 未定义方法 stub_model

mysql - RoR : Cannot change_column in postgres, 在 MySQL 中正常(MySQL 用于开发,Postgres on Heroku)

postgresql - HikariCP 连接池 - 'active' - 如何调试?

python - 在 sql 查询 python 中使用时,格式选项不起作用

java - 下载 ubuntu 14.04 中的所有软件包后无法初始化 opennms 数据库 postgres

ruby-on-rails - 无效的全名 : `model:@each` , 必须是 `type:name` 的形式

ruby-on-rails - 未知 key : :expression. 有效 key 为 : :unique, :order, :name, :where, :length, :internal, :using, :algorithm, :type

css - .well 类中的垂直居中 Bootstrap btn

sql - Postgres 查询运行很慢