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기본값은 localhostand port 5432입니다. 포트 변경을 시도했지만 오류 메시지는 동일합니다 (포트 변경 제외).

모두 ps aux | grep postgresqlps aux | grep postmaster반환 아무것도.

편집하다:

에서 postgresql.conf내가 변경 listen_addresses127.0.0.1대신 localhost하고 속임수를 썼는지, 서버가 다시 시작됩니다. 또한 응용 프로그램의 db 구성을 편집하고 127.0.0.1대신 가리켜 야했습니다 localhost. 그러나 문제는 이제 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?의 출력
Flup

1
데이터를 난독 처리하려면 책임감있게 수행하고 example.com도메인 이름으로 사용하십시오.
Jenny D

답변:


12

당신 /etc/hosts은 부서졌습니다. 첫 번째 줄은

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

당신이 경우에도 미래의 독자를위한 참고 할 수 있는 로컬 호스트 항목이 /etc/hosts의 DNS 조회 때, 여러 가지 다른 요소가 다른 DNS 응답을 일으킬 수 localhost실제로 실행됩니다. stackoverflow.com/a/47824848/5419599를 참조하십시오 .
와일드 카드

@Wildcard 나는 어떤 OS가 대답 할 수 있는지 모른다. Linux에서는 확실히 의미가 없습니다.
kasperd

1
당신이 순서를 가지고 있다면 내가 생각 @kasperd dns files대신 files dnsnsswitch.conf의의를, 그리고 결의가 로컬 호스트하는 이름 서버를 가지고, 당신은 곤경에 얻을 수 있습니다. 그러나 그것은 나에게는 거의 들리지 않습니다 ...
Jenny D

@JennyD 위의 답변은을 사용 nslookup하여 확인을 제안 합니다. 그러나 nslookup리눅스에 명령을 사용하지 않습니다 nsswitch.conf/etc/hosts처음이다. 그리고 dns files구성 을 넣는 것에 관해서는 나에게 문제를 묻는 것처럼 들립니다.
kasperd

1
@kasperd Agreed- "자신이 망할 결함"규모로 상당히 높을 것입니다.
Jenny D

0

나는이 질문에 대한 답을 알고 있지만 여전히 오류가있는 사람들에게는 다른 프로세스가 이미 시작했기 때문일 수 있습니다. 예를 들어 Homebrew시스템 부팅

이 경우 중지하십시오.
brew services stop postgres

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.