Ich verwende eine Rails-App in der Entwicklung mit postgresql 9.3. Als ich heute versuchte, den Passagierserver zu starten, bekam ich:
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?
Keine große Sache, dachte ich, das ist schon mal passiert. Ein Neustart von postgres hat das Problem immer gelöst. Also rannte ich sudo service postgresql restart
und bekam:
* 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!
Meine postgresql.conf
Punkte zu den Vorgaben: localhost
und Port 5432
. Ich habe versucht, den Port zu ändern, aber die Fehlermeldung ist dieselbe (mit Ausnahme der Portänderung).
Beides ps aux | grep postgresql
und ps aux | grep postmaster
nichts zurück.
BEARBEITEN:
In postgresql.conf
ich geändert , listen_addresses
um 127.0.0.1
statt localhost
und es hat den Trick, Server neu gestartet. Ich musste auch die db-Konfiguration meiner Anwendungen bearbeiten und 127.0.0.1
stattdessen auf zeigen localhost
. Die Frage ist nun jedoch, warum localhost als solche angesehen wird 217.74.65.145
und nicht 127.0.0.1
.
Das ist mein /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
quelle
sudo netstat -anlp | grep 5432
?example.com
als Domainnamen.Antworten:
Du
/etc/hosts
bist kaputt. Die erste Zeile sollte lautenquelle
/etc/hosts
verschiedenen anderen Faktoren eine andere DNS - Antwort führen können , wenn eine DNS - Lookup vonlocalhost
tatsächlich ausgeführt werden . Siehe stackoverflow.com/a/47824848/5419599 .dns files
stattfiles dns
in der Datei nsswitch.conf haben und einen Nameserver haben, der localhost auflöst, könnten Sie Probleme bekommen. Aber das klingt für mich höchst unwahrscheinlich ...nslookup
zur Bestätigung zu verwenden. Aber dernslookup
Befehl auf Linux nicht verwendetnsswitch.conf
und/etc/hosts
an erster Stelle. Und wasdns files
die Konfiguration angeht, klingt das so, als würde ich nach Ärger fragen.Ich verstehe, dass diese Frage beantwortet ist, aber für diejenigen, die immer noch den Fehler haben, könnte der Grund sein, dass ein anderer Prozess bereits damit begonnen hat. Zum Beispiel
Homebrew
beim Systemstart.Wenn dies der Fall ist, versuchen Sie es zu stoppen:
brew services stop postgres
quelle