当前位置: 首页 > 知识库问答 >
问题:

rails 4 PG::ConnectionBad无法连接到服务器[重复]

岑叶秋
2023-03-14

有很多类似的问题,但都略有不同。

Gemfile:

source 'https://rubygems.org'

gem 'rails', '4.2.6'
gem 'pg', '~> 0.15'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc

group :development, :test do
  gem 'byebug'
  gem 'rspec-rails', '~> 3.4'
end

group :development do
  gem 'web-console', '~> 2.0'
  gem 'spring'
end

Rails 4.2.6并在返回的命令行中执行psql

<code>PG::ConnectionBad(无法连接到服务器:没有这样的文件或目录。服务器在本地运行并接受Unix域套接字上的连接“/tmp/.s.PGSQL.5432”?

在启动rails服务器并尝试加载根路径之后,在浏览器中也得到了相同的结果。

我发现在命令行中执行postgres也不起作用,返回:

postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.

共有3个答案

饶明亮
2023-03-14

为了方便,重新发布了答案:

添加

如果在OSX上,请使用自制程序管理您的安装。

安装自制软件: /usr/bin/ruby -e “$(卷曲 -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

更新它:酿造更新

安装数据库:brew install postgresql

使用launchctl加载:<code>launchct加载-w/usr/local/opt/postgresql/homebrew.mxcl.postgresq.plist

回答:

它可能像陈旧的PID文件一样简单。它可能会无声地失败,因为您的计算机没有完全完成关机过程,这意味着postgres没有删除PID(进程ID)文件。postgres使用PID文件来确保一次只有一个服务器实例在运行。因此,当它再次启动时,它会失败,因为已经有一个PID文件告诉postgres服务器的另一个实例已经启动(即使它没有运行,它只是没有关闭和删除PID)。

>

  • 要修复此问题,请删除/重命名PID文件。查找postgres数据目录。在使用自制软件的MAC上,它是/usr/local/var/postgres/,在其他系统上,它可能是/usr/var/postgres/

    要确定这是问题所在,请查看日志文件(< code>server.log)。在最后几行,您将看到:< code>FATAL:锁文件“postmaster.pid”已经存在提示:是否有另一个postmaster (PID 347)正在数据目录“/usr/local/var/postgres”中运行?

    如果是这样,rmpostmaster.pid

    重新启动服务器。在使用launchctl(使用自制程序)的mac上,以下命令将重新启动服务器。

    launchctl unload/usr/local/opt/postgresql/homebrew.mxcl.postgresq.plist

    launchctl-load-w/usr/local/opt/postgresql/homebrew.mxcl.postgresq.plist

  • 卢黎明
    2023-03-14

    我发现了这个问题,并在命令行中运行了export PGDATA=/usr/local/var/postgres。这允许我使用postgres启动postgres(我甚至不知道这是必要的——为什么Rails不这样做呢?)然后rake db: create,启动rails服务器(在新选项卡中),一切正常!我不知道这是否是最好的解决方案,但认为值得分享。

    董飞
    2023-03-14

    您可以尝试删除 /usr/本地/var/postgres/postmaster.pid,然后重新启动 postgres
    在Mac OS上,您可以使用午餐轻松重启。

     类似资料:
    • 每次运行Rails4.0服务器时,都会得到这个输出。 我正在运行小牛OS X10.9,所以我不知道这是不是问题所在。我已经试了我能试的一切,但似乎都没有效果。我已经卸载并安装了postgres和pg gem多次了。 这是我的database.yml文件

    • 我试图通过ubuntu中的命令行连接到postgresql,但它显示以下错误:- 对于这个错误,我尝试了谷歌的许多解决方案,但都没有成功。有人能在这个问题上帮我吗?

    • 我在设置打开班次时遇到问题,并在连接到我的服务器域后收到以下错误: 我不确定这是在告诉我做什么。我尝试按字面意思使用指令,但它无法识别命令。 有什么想法吗?

    • 问题内容: 我不确定如何解决此问题 我不知道为什么在尝试以下操作时会出现此错误: 当我尝试连接到postgres时: 问题答案: 可能是一些问题: PostgreSQL没有运行。用sudo检查 你的PostgresSQl不在端口5432上运行。你可以检查其键入 尝试连接到数据库时出现错误,例如用户名,密码或数据库名。检查它们是否是postgres要求你连接的对象,并且这是你要访问的db_name。

    • 在我做了和之后,我的postgres遇到了一些问题。我试着卸载postgres并重新安装它,但它并没有那么好用。 这就是我所做的: 现在,在我重新安装homebrew之后,当我使用时,它不显示任何错误消息。 但是我在我的Rails应用程序中运行,它显示: 更新 这对我也管用。

    • 注意:连接是LAN,在隧道模式下工作正常,但速度较慢