有很多类似的问题,但都有些不同。
的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.
答案 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)。
要修复它,请删除/重命名PID文件。找到postgres数据目录。在使用自制软件的MAC上,它是/usr/local/var/postgres/
,其他系统可能是/usr/var/postgres/
。
要确保这是问题所在,请查看日志文件(server.log
)。在最后一行,您会看到:FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 347) running in data directory "/usr/local/var/postgres"?
如果是,rm postmaster.pid
重新启动服务器。在使用launchctl(使用自制程序)的mac上,以下命令将重新启动服务器。
launchctl unload /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist
launchctl load -w /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist