Estou executando um aplicativo rails em desenvolvimento com o postgresql 9.3. Quando tentei iniciar o servidor de passageiros hoje, obtive:
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?
Não foi grande coisa que pensei, isso já aconteceu antes. Reiniciar o postgres sempre resolvia o problema. Então eu corri sudo service postgresql restart
e consegui:
* 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!
Meus postgresql.conf
pontos para os padrões: localhost
e porta 5432
. Tentei alterar a porta, mas a mensagem de erro é a mesma (exceto a alteração da porta).
Ambos ps aux | grep postgresql
e ps aux | grep postmaster
não retornam nada.
EDITAR:
Em postgresql.conf
mudei listen_addresses
para em 127.0.0.1
vez de localhost
e ele fez o truque, o servidor reiniciou. Eu também tive que editar a configuração de banco de dados dos meus aplicativos e apontar para em 127.0.0.1
vez de localhost
. No entanto, a questão agora é: por que o host local é considerado 217.74.65.145
e não 127.0.0.1
?
Essa é a minha /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
fonte
sudo netstat -anlp | grep 5432
?example.com
como nome de domínio.Respostas:
Você
/etc/hosts
está quebrado. A primeira linha deve lerfonte
/etc/hosts
, vários outros fatores podem causar uma resposta DNS diferentes quando uma pesquisa de DNS delocalhost
é realmente executado. Consulte stackoverflow.com/a/47824848/5419599 .dns files
vez dofiles dns
nsswitch.conf e tem um servidor de nomes que resolve o localhost, você pode ter problemas. Mas isso faz som altamente improvável para mim ...nslookup
para verificar. Mas onslookup
comando no Linux não usansswitch.conf
e/etc/hosts
em primeiro lugar. E quanto a colocardns files
na configuração, isso parece pedir problemas para mim.Entendo que esta pergunta foi respondida, mas para quem ainda tem o erro, o motivo pode ser que algum outro processo já o tenha iniciado. Por exemplo,
Homebrew
na inicialização do sistema.Se for esse o caso, tente pará-lo:
brew services stop postgres
fonte