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とポート5432。ポートを変更しようとしましたが、エラーメッセージは同じです(ポートの変更を除く)。

どちらps aux | grep postgresqlps aux | grep postmaster戻り何も。

編集:

で代わりpostgresql.confに変更listen_addressesし、トリックを行い、サーバーを再起動しました。また、アプリケーションのdb configを編集し、の代わりにをポイントする必要がありました。しかし、問題は今、なぜlocalhostがそうであると考えられているのかではないのですか?127.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

から任意の出力sudo netstat -anlp | grep 5432
フラップ14年

1
データを難読化する場合は、責任を持って行いexample.com、ドメイン名として使用してください。
ジェニーD 14年

回答:


12

あなた/etc/hostsが壊れています。最初の行は次のようになります

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

あなたがあっても、将来のリーダーのノート行うのlocalhostエントリを持っている/etc/hostsのDNSルックアップをするとき、他のさまざまな要因が異なるDNS応答を引き起こす可能性がありlocalhost、実際に実行されます。stackoverflow.com/a/47824848/5419599を参照してください。
ワイルドカード

@Wildcardその答えが適用されるOSがわからない(ある場合)。確かにLinuxではあまり意味がありません。
カスペルド

1
私はあなたが順序を持っている場合とし@kasperd dns filesの代わりfiles dnsのnsswitch.confに、そして解決さをlocalhostという名前のサーバーを持っている、あなたがトラブルに巻き込まれる可能性があります。しかし、それは私には非常に低い音...ない
ジェニーD

@JennyD上記のリンクの回答はnslookup、検証に使用することを示唆しています。しかし、nslookupLinuxのコマンドは使用しませんnsswitch.confし、/etc/hosts最初の場所インチ そしてdns files、構成を入れることに関して、それは私にトラブルを求めるように聞こえます。
カスペルド

1
@kasperd合意-それはかなり高い「it's自分で自分-のろわ障害」規模...のだろう
ジェニーD

0

私はこの質問に答えていることを理解していますが、まだエラーがある場合は、他のプロセスがすでにそれを開始している可能性があります。たとえばHomebrew、システムの起動時。

その場合は、停止してみてください。
brew services stop postgres

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.