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


14

我正在使用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和port 5432。我尝试更改端口,但错误消息相同(端口更改除外)。

两者ps aux | grep postgresqlps aux | grep postmaster没有返回任何内容。

编辑:

postgresql.conf我更改listen_addresses127.0.0.1而不是localhost成功的过程中,服务器重新启动。我还必须编辑应用程序的db config并指向127.0.0.1而不是localhost。但是,现在的问题是,为什么将本地主机视为217.74.65.145而不是127.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

任何输出sudo netstat -anlp | grep 5432
2014年

1
如果您要混淆数据,请负责任地这样做并example.com用作域名。
珍妮·D

Answers:


12

/etc/hosts坏了。第一行应为

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

对于将来的读者请注意,即使您确实在中有一个localhost条目/etc/hosts,当localhost实际运行DNS查找时,各种其他因素也会导致不同的DNS响应。请参阅stackoverflow.com/a/47824848/5419599
通配符

@Wildcard我不知道该答案适用于哪个操作系统(如果有)。在Linux上,这当然没有多大意义。
kasperd

1
@kasperd我想如果您已获得命令dns files而不是files dnsnsswitch.conf中的命令,并且拥有解析本地主机的名称服务器,则可能会遇到麻烦。但这听起来对我来说极不可能...
Jenny D

@JennyD上面链接的答案建议使用nslookup进行验证。但nslookup在Linux命令不使用nsswitch.conf,并/etc/hosts摆在首位。至于dns files配置,这听起来像是在问我麻烦。
卡巴斯德(Kasperd),

1
@kasperd Agreed-在“这是您自己的该死的错误”的范围内,这个数字会很高...
Jenny D

0

我知道此问题已得到解答,但是对于仍然有错误的用户,原因可能是其他一些程序已经启动了它。例如Homebrew在系统启动时。

如果是这种情况,请尝试将其停止:
brew services stop postgres

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.