Läuft der Server auf dem Host "localhost" (:: 1) und akzeptiert TCP / IP-Verbindungen auf Port 5432?

79

Bitte beachten Sie, dass ich im gesamten Web einige ähnliche Fragen zu Stapelüberlauf und Artikeln gefunden habe, aber keine davon hat mir geholfen, mein Problem zu beheben:

Hier ist das Problem:

  • Ich habe eine Rails-App, die wie ein Zauber funktioniert.
  • Mit meinem Mitarbeiter arbeiten wir mit GitHub zusammen.
  • Wir haben eine masterund eine mvpNiederlassung.
  • Ich habe kürzlich meine gitVersion mit Homebrew (Mac) aktualisiert .
  • Wir verwenden Foreman, um unsere App lokal zu starten.

Wenn ich jetzt versuche, die App lokal zu starten, wird folgende Fehlermeldung angezeigt:

PG::ConnectionBad at /
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

Ich habe mehrmals versucht, meine Computer neu zu starten.

Ich habe auch den Inhalt überprüft von /usr/local/var/postgres:

PG_VERSION      pg_dynshmem     pg_multixact    pg_snapshots    pg_tblspc       postgresql.conf
base            pg_hba.conf     pg_notify       pg_stat         pg_twophase     postmaster.opts
global          pg_ident.conf   pg_replslot     pg_stat_tmp     pg_xlog         server.log
pg_clog         pg_logical      pg_serial       pg_subtrans     postgresql.auto.conf

Wie Sie sehen können, befindet sich dort keine postmaster.pidDatei.

Irgendeine Idee, wie ich das beheben könnte?

Thibaud Clement
quelle
Können Sie die Frage mit dem Inhalt von aktualisieren postgresql.conf?
Pavan

Antworten:

56

Die Batterie ist höchstwahrscheinlich leer und Ihr Postgresql-Server wurde nicht richtig heruntergefahren.

Die einfachste Lösung besteht darin, die offizielle postgresql-App herunterzuladen und zu starten: Dadurch wird der Server zum Starten gezwungen ( http://postgresapp.com/ ).

Graham Slick
quelle
2
Danke für deine Antwort. Ich habe gerade die App heruntergeladen und gestartet. Wenn ich es vor dem Starten meines Servers herunterfahre, wird immer noch der gleiche Fehler angezeigt. Wenn ich es nicht herunterfahre, erhalte ich eine Fehlermeldung, dass meine "Datenbank nicht existiert". Kann das zusammenhängen?
Thibaud Clement
Wenn Ihre Datenbank nicht vorhanden ist, sollten Sie rake db: create ausführen. Aber das hat höchstwahrscheinlich nichts damit zu tun ... Hast du gerade ein Repo oder so etwas gegabelt? Sie sollten es nicht herunterfahren, bevor Sie Ihren Server mit 'Rails s' starten !! Die App muss die ganze Zeit ausgeführt werden, wenn Sie auf einem
Graham Slick
OK. Nein, ich habe kein Repo gegabelt, es ist das gleiche Repo, mit dem ich gearbeitet habe. Aber ich bin gerannt git fetch, vielleicht ist das das Problem.
Thibaud Clement
Git Fetch soll die Datenbank nicht löschen. Was passiert, wenn Sie rake db: create ausführen?
Graham Slick
1
"Die Batterie ist leer" ... genau das ist passiert! : -O
Sagar Ranglani
127

laufen postgres -D /usr/local/var/postgresund du solltest so etwas sehen wie:

 FATAL:  lock file "postmaster.pid" already exists
 HINT:   Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?

Führen Sie dann kill -9 PIDTIPP aus

Und du solltest gut gehen.

user8376606
quelle
4
Die beste Lösung für meinen Fall ist, dass mein Computer unerwartet heruntergefahren und der Dienst neu gestartet wurde, um das Problem nicht zu lösen - danke!
Paul Nelligan
3
Wenn Sie Homebrew verwenden, brew services start postgresoderbrew services restart postgres den Trick machen könnten
Mirror318
1
Vielen Dank! Ich habe dieses Problem zum zweiten Mal ausgeführt. Wie haben Sie verstanden, dass dies die Lösung sein würde?
Qasimalbaqali
1
Irgendeine äquivalente Lösung für Linux Ubuntu Dist?
Tito.300
1
Dies funktionierte 2019 für mich, nachdem ich stundenlang versucht hatte, das Problem zu lösen.
Mwangi Kabiru
51

Höchstwahrscheinlich liegt es daran, dass Ihr System unerwartet heruntergefahren wurde

Versuchen

postgres -D /usr/local/var/postgres

Sie könnten sehen

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?

Dann versuche es

kill -9 PID

Beispiel

kill -9 419

Und es sollte normal mit Postgres beginnen

Nishant
quelle
Ja, mein System wurde unerwartet heruntergefahren und dies löste mein Problem. Vielen Dank.
Entwickeln Sie
19

Der Postgresql-Server ist möglicherweise ausgefallen und die Lösung ist möglicherweise so einfach wie das Ausführen:

sudo service postgresql start

das hat das Problem für mich behoben.

Shiva89
quelle
15

Ich hatte fast den gleichen Fehler mit meiner Ruby on Rails-Anwendung, auf der postgresql (mac) ausgeführt wurde. Das hat bei mir funktioniert:

brew services restart postgresql
Talha Meh
quelle
14

Das hat in meinem Fall funktioniert:

brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql
Bräunen
quelle
11

Dies kann durch die für Postgres erstellte PID-Datei verursacht werden, die aufgrund eines unerwarteten Herunterfahrens nicht gelöscht wurde. Um dies zu beheben, entfernen Sie diese PID-Datei.

  1. Suchen Sie das Datenverzeichnis von postgres. Auf einem MAC, der Homebrew verwendet /usr/local/var/postgres/, handelt es sich möglicherweise um andere Systeme/usr/var/postgres/

  2. Entfernen Sie die PID-Datei, indem Sie Folgendes ausführen:

    rm postmaster.pid
    
  3. Postgress neu starten. Führen Sie auf dem Mac Folgendes aus:

    brew services restart postgresql
    
Aman Kumar
quelle
das hat bei mir funktioniert, danke
Humoyun Ahmad
3

Ich habe das Problem über diesen Befehl behoben

pg_ctl -D /usr/local/var/postgres start

Manchmal kann dieser Fehler auftreten

pg_ctl: another server might be running; trying to start server anyway

Versuchen Sie also, den folgenden Befehl auszuführen, und führen Sie dann den ersten oben angegebenen Befehl aus.

pg_ctl -D /usr/local/var/postgres stop
Techdreams
quelle
1

Das hat bei mir funktioniert: renn

sudo lsof -i :<port_number>

Danach wird die PID angezeigt, die derzeit an den Prozess angehängt ist.

Nach diesem Lauf sudo kill -9 <PID>

Wenn das nicht funktioniert, probieren Sie die von user8376606 angebotene Lösung aus, es würde definitiv funktionieren!

vonvick
quelle
1

Wenn Sie Postgresql unter Linux neu starten möchten, müssen Sie den folgenden Befehl verwenden.

/etc/init.d/postgresql restart

Ranvir
quelle
1

Zuerst habe ich es versucht

lsof -wni tcp: 5432, aber es wird keine PID-Nummer angezeigt.

Zweitens habe ich es versucht

Postgres -D / usr / local / var / postgres und es zeigte, dass der Server lauscht.

Also habe ich meinen Mac neu gestartet, um alle Ports wiederherzustellen, und es hat bei mir funktioniert.

Saif Chaudhry
quelle
1

Für Docker- Benutzer: In meinem Fall wurde dies durch eine übermäßige Docker-Bildgröße verursacht. Sie können nicht verwendete Daten mit dem folgenden pruneBefehl entfernen :

docker system prune --all --force --volumes

Warnung: gemäß Handbuch ( docker system prune --help):

Dadurch wird Folgendes entfernt:

  • alle angehaltenen Container
  • Alle Netzwerke, die nicht von mindestens einem Container verwendet werden
  • alle baumelnden Bilder
  • Alle baumelnden Build-Cache
Tomasz Bartkowiak
quelle
0

Ich stoße häufig auf dieses Problem unter Windows. Die Art und Weise, wie ich das Problem gelöst habe, ist Service - Klicken Sie auf PostgreSQL Database Server 8.3 - Klicken Sie auf die zweite Registerkarte "Anmelden" - wählen Sie die erste Zeile "Das lokale Systemkonto".

管 浩浩
quelle
0

Es gibt auch den gleichen Fehler, wenn Sie nur Ihre PostgreSQL-App stoppen. Sie müssen es nur erneut starten. (PostgreSQL 11)

sogu
quelle
0

Ich hatte das gleiche Problem und konnte den postgresql-Server nicht starten und konnte auch nach Eingabe des Kennworts nicht auf meine Datenbank zugreifen. Ich habe alle möglichen Methoden ausgeführt.

Diese Lösung hat bei mir funktioniert,

Für die Ubuntu-Benutzer: Geben Sie über die Befehlszeile die folgenden Befehle ein:

1.service --status-all (gibt eine Liste aller Dienste und deren Status an. Dabei bezieht sich "+" auf die Ausführung und "-" darauf, dass der Dienst nicht mehr ausgeführt wird).

Überprüfen Sie den Postgresql-Status. Wenn "-" angezeigt wird, geben Sie den folgenden Befehl ein

2.systemctl start postgresql (startet den Server erneut)

Aktualisieren Sie die Postgresql-Seite im Browser, und es funktioniert

Für die Windows-Benutzer:

Suchen Sie nach Diensten, wo wir eine Liste der Dienste sehen können und klicken Sie mit der rechten Maustaste auf postgresql, klicken Sie auf Start und der Server funktioniert einwandfrei.

Usha Sravani
quelle
0

In meinem Fall

  1. Ich habe den Port in der Datei postgresql.conf geändert
  2. und starten Sie die postgresql-Dienste in neu

Führen Sie => service.msc => Neustart aus

  1. Versuchen Sie es jetzt erneut
Niranjan
quelle
0

Schritt 1:

cd /etc/postgresql/12/main/

Datei mit dem Namen öffnen postgresql.conf

sudo nano postgresql.conf

Fügen Sie diese Zeile zu dieser Datei hinzu

listen_addresses = '*'

Öffnen Sie dann die Datei mit dem Namen pg_hba.conf

sudo nano pg_hba.conf

und fügen Sie diese Zeile zu dieser Datei hinzu

host  all  all 0.0.0.0/0 md5

Es ermöglicht allen Benutzern mit einem verschlüsselten Passwort den Zugriff auf alle Datenbanken

Starten Sie Ihren Server neu

sudo /etc/init.d/postgresql restart
Muhammad Usama Rabani
quelle