Postgres - 无法创建任何 TCP/IP 套接字

Postgres - 无法创建任何 TCP/IP 套接字

我正在使用 postgresql 9.3 运行一个正在开发的 rails 应用程序。今天当我尝试启动乘客服务器时,我得到了:

PG::ConnectionBad - could not connect to server: Connection refused
    Is the server running on host "localhost" (217.74.65.145) and accepting
    TCP/IP connections on port 5432?

我认为没什么大不了的,以前也发生过这种情况。重新启动 postgres 总是能解决问题。所以我运行sudo service postgresql restart并得到:

 * Restarting PostgreSQL 9.3 database server
 * The PostgreSQL server failed to start. Please check the log output:
2014-06-11 10:32:41 CEST LOG:  could not bind IPv4 socket: Cannot assign requested address
2014-06-11 10:32:41 CEST HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2014-06-11 10:32:41 CEST WARNING:  could not create listen socket for "localhost"
2014-06-11 10:32:41 CEST FATAL:  could not create any TCP/IP sockets
...fail!

postgresql.conf指出默认值:localhost和端口5432。我尝试更改端口,但错误消息相同(端口更改除外)。

ps aux | grep postgresql和均不ps aux | grep postmaster返回任何内容。

编辑:

我将postgresql.conf改为而不是,这样就成功了,服务器重新启动了。我还必须编辑应用程序的数据库配置并指向而不是。但是,现在的问题是,为什么 localhost 被认为是而不是?listen_addresses127.0.0.1localhost127.0.0.1localhost217.74.65.145127.0.0.1

那是我的/etc/hosts

127.0.0.1   local
127.0.1.1   jacek-X501A1
127.0.0.1   something.name.non.example.com
127.0.0.1   company.something.name.non.example.com

答案1

你的/etc/hosts坏了。第一行应该是

127.0.0.1   localhost something.name.non.example.com company.something.name.non.example.com

答案2

我知道这个问题已经得到解答了,但对于那些仍然遇到错误的人来说,原因可能是其他某个进程已经启动了它。例如Homebrew在系统启动时。

如果是这种情况,请尝试阻止它:
brew services stop postgres

答案3

对我来说,它是 Postgres 的监听地址:它被配置为在安装时可能连接到的网络上监听自己的 IP(而不是“localhost”)。

无论如何,打开postgresql.conf并确认listen_addresses = 'localhost'(或其他对你有意义的东西)。

相关内容