为了账号安全,请及时绑定邮箱和手机立即绑定

PG :: ConnectionBad - 无法连接到服务器:连接被拒绝

/ 猿问

PG :: ConnectionBad - 无法连接到服务器:连接被拒绝

茅侃侃 2019-08-29 08:35:01

PG :: ConnectionBad - 无法连接到服务器:连接被拒绝

每次我运行rails 4.0服务器时,我都会得到这个输出。


Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500


PG::ConnectionBad - could not connect to server: Connection refused

Is the server running on host "localhost" (::1) and accepting

TCP/IP connections on port 5432?

could not connect to server: Connection refused

Is the server running on host "localhost" (127.0.0.1) and accepting

TCP/IP connections on port 5432?

could not connect to server: Connection refused

Is the server running on host "localhost" (fe80::1) and accepting

TCP/IP connections on port 5432?

:

 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'

 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'

 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'

 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'

我正在运行Mavericks OS X 10.9所以我不知道这是不是问题。我已尽力而为,但似乎没有任何工作。我已经多次卸载并安装了postgres和pg gem。


这是我的database.yml文件


development:

  adapter: postgresql

  encoding: unicode

  database: metals-directory_development

  pool: 5

  username: 

  password: 

  template: template0

  host: localhost

  port: 5432


test: &test

  adapter: postgresql

  encoding: unicode

  database: metals-directory_test

  pool: 5

  username: 

  password: 

  template: template0

  host: localhost

  port: 5432


staging:

  adapter: postgresql

  encoding: unicode

  database: metals-directory_production

  pool: 5

  username:

  password:

  template: template0

  host: localhost


production:

  adapter: postgresql

  encoding: unicode

  database: metals-directory_production

  pool: 5

  username:

  password:

  template: template0

  host: localhost


cucumber:

  <<: *test


查看完整描述

3 回答

?
狐的传说

它可能像过时的PID文件一样简单。它可能会无声地失败,因为您的计算机没有完全完成关闭过程,这意味着postgres没有删除PID(进程ID)文件。

postgres使用PID文件来确保一次只运行一个服务器实例。因此,当它再次启动时,它会失败,因为已经有一个PID文件告诉postgres服务器的另一个实例已启动(即使它没有运行,它只是没有关闭并删除PID) 。

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

  2. 要确保这是问题所在,请查看日志文件(server.log)。在最后几行,您将看到:

致命:锁文件“postmaster.pid”已经存在
提示:是否有另一个postmaster(PID 347)在数据目录“/ usr / local / var / postgres”中运行?

  1. 如果是这样, rm postmaster.pid

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

    launchctl unload homebrew.mxcl.postgresql.plist  
    launchctl load -w homebrew.mxcl.postgresql.plist

    或者在较新版本的Brew上

    brew services restart postgresql


查看完整回答
反对 2019-08-29
?
芜湖不芜

经过大量的搜索和分析,我找到了一个解决方案,如果你使用ubuntu只需在你的终端中写下这个命令并点击回车

sudo service postgresql restart

这将重启你的PostgreSQL,希望这对你有帮助。


查看完整回答
反对 2019-08-29
?
一只名叫tom的猫

我已经设法通过遵循Chris Slade的答案来解决问题,但是要重新启动服务器,我必须使用以下命令:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist


查看完整回答
反对 2019-08-29

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信