rails 4 PG :: ConnectionBad无法连接到服务器

时间:2016-06-24 20:37:10

标签: ruby-on-rails ruby postgresql

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

的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

PG::ConnectionBad (could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我发现this问题并在命令行中运行export PGDATA=/usr/local/var/postgres。这让我开始使用postgres postgres(我甚至不知道这是必要的 - 为什么Rails没有为你做那个?)然后rake db:create,启动了rails服务器(在新标签)一切正常!我不知道这是否是最佳解决方案,但认为值得分享。

答案 2 :(得分:0)

<强> Re-posted Answer for Convenience:

<强>加了:

如果是OSX,请使用homebrew管理您的安装。

安装Homebrew:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

更新它:brew update

安装数据库:brew install postgresql

使用launchctl加载:launchctl load -w /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist

<强>答案:

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

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

  2. 要确保这是问题所在,请查看日志文件(server.log)。在最后一行,您会看到:FATAL: lock file "postmaster.pid" already exists HINT: Is another postmaster (PID 347) running in data directory "/usr/local/var/postgres"?

  3. 如果是,rm postmaster.pid

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

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

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