因为在执行rails的db:create命令时遇到了错误,所以记录了当时的应对措施

环境:PostgreSQL-10

当我运行 `bin/rails db:create` 命令时,出现了以下错误。

无法连接服务器:没有这个文件或目录

服务器是否在本地运行并接受通过Unix域套接字”/var/run/postgresql/.s.PGSQL.5432″的连接?

无法创建’scaffold_app1_development’数据库。请检查您的配置。

rails中止!
PG::ConnectionBad:无法连接服务器:没有这个文件或目录
服务器是否在本地运行并接受通过Unix域套接字”/var/run/postgresql/.s.PGSQL.5432″的连接?

/home/shunsuke/scaffold_app1/bin/rails:9:在<top(required)>’内
/home/shunsuke/scaffold_app1/bin/spring:15:in’
bin/rails:3:load’内
bin/rails:3:in’
任务:TOP => db:create
(通过使用–trace运行任务查看完整跟踪)

尝试过的事情 (Shì de

请问是否监控着5432端口?因为出现错误信息,所以尝试使用$service postgresql start重新启动服务器,然后再次尝试相同的命令,但没有任何变化。

解决方案

试试查看正在运行的Postgresql正在接受的端口号。
通过$sudo pg_lsclusters命令进行确认,
10 main 5433 在线 postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log

由于显示为5433,并在config/database.yml中进行接受,故需要在该文件中写入端口号↓

默认: &default
适配器: postgresql
编码: unicode
# 关于连接池的详细信息,可参考Rails配置指南
# http://guides.rubyonrails.org/configuring.html#database-pooling
连接池: <%= ENV.fetch(“RAILS_MAX_THREADS”) { 5 } %>
端口: 5433 #在这里指定了端口

当你运行”bin/rails db:create”命令时

警告:无法刷新脏数据:未实现的功能
创建了数据库’scaffold_app1_development’
警告:无法刷新脏数据:未实现的功能
创建了数据库’scaffold_app1_test’

尽管出现了警告信息,但我还是成功地做出来了!由于bin/rails s成功运行,所以总算是解决了问题…

给你赠品?
虽然我认为没有关联,但是我会写下同步添加端口号的措施。
在查看某个网站时,我看到了这个措施。
使用下面的命令打开postgresql.conf文件。
sudo vi /etc/postgresql/10/main/postgresql.conf

我将取消其中的#fsync = on注释,并将其更改为fsync = off。我在下面添加了data_sync_retry = true。

关闭fsync功能,不为崩溃安全性将数据刷新到磁盘
数据同步重试为启用状态(关闭此选项可能导致)

这个是否有效我不确定,但总之…
这个是在做什么我不太清楚。。。