webentwicklung-frage-antwort-db.com.de

psql: Verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder Verzeichnis (Mac OS X)

Beim Neustart meines Macs bekam ich den gefürchteten Postgres-Fehler:

psql: could not connect to server: No such file or directory
 Is the server running locally and accepting
 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Der Grund dafür ist, dass mein Macbook aufgrund eines nicht zusammenhängenden Problems vollständig eingefroren ist und ich einen Neustart mit dem Netzschalter durchführen musste. Nach dem Neustart konnte ich Postgres aufgrund dieses Fehlers nicht starten.

172
FireDragon

WARNUNG: Wenn Sie postmaster.pid löschen, ohne sich zu vergewissern, dass wirklich keine postgres-Prozesse ausgeführt werden, kann Ihre Datenbank dauerhaft beschädigt werden . (PostgreSQL sollte es automatisch löschen, wenn der Postmaster beendet wurde.).

LÖSUNG: Das Problem wurde behoben. Ich habe diese Datei gelöscht und alles hat funktioniert!

/usr/local/var/postgres/postmaster.pid

-

und so habe ich herausgefunden, warum dies gelöscht werden musste. 

  1. Ich habe den folgenden Befehl verwendet, um festzustellen, ob PG-Prozesse ausgeführt werden. für mich gab es keine, ich konnte den PG-Server nicht einmal starten:

    ps auxw | grep post
    
  2. Ich suchte nach der Datei .s.PGSQL.5432, die in der obigen Fehlermeldung angezeigt wurde. Ich habe den folgenden Befehl verwendet:

    Sudo find / -name .s.PGSQL.5432 -ls
    

    nach dem Durchsuchen meines gesamten Computers wurde nichts angezeigt, sodass die Datei nicht vorhanden war. Offensichtlich wollte psql "es" oder "dachte, sie wäre da".

  3. Ich habe mir meine Serverprotokolle angesehen und den folgenden Fehler festgestellt:

    cat /usr/local/var/postgres/server.log
    

    am Ende des Serverprotokolls sehe ich den folgenden Fehler:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
    
  4. Nach dem Hinweis in der Fehlermeldung löschte ich die Datei postmaster.pid im selben Verzeichnis wie server.log. Dies löste das Problem und ich konnte neu starten.

Es scheint also so, als ob mein Macbook einfriert und hart neu gestartet wird, dass Postgres den Eindruck hatte, dass die Prozesse auch nach dem Neustart noch laufen. Löschen dieser Datei behoben. Hoffe das hilft anderen! Viele Leute haben ähnliche Probleme, aber die Antworten hatten meistens mit Dateiberechtigungen zu tun, wohingegen bei mir die Dinge anders waren.

319
FireDragon

Keines der oben genannten Dinge funktionierte für mich. Ich musste Postgres folgendermaßen neu installieren:

  • Deinstallieren Sie postgresql mit brew: brew uninstall postgresql
  • brew doctor (beheben, was hier ist)
  • brew cleanup
  • Entfernen Sie alle Postgres-Ordner: 

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • Postgresql mit brew neu installieren: brew install postgresql

  • Server starten: brew services start postgresql
  • Sie sollten jetzt Ihre Datenbanken erstellen ... (createdb)
83
ypicard

Wenn Sie MacOS verwenden und Postgres über Homebrew installiert haben, starten Sie es mit 

brew services restart postgresql

Wenn Sie Ubuntu verwenden, können Sie es mit einem dieser Befehle neu starten 

Sudo service postgresql restart

Sudo /etc/init.d/postgresql restart
68

Möglicherweise hat dies keinen Zusammenhang, aber ein ähnlicher Fehler wird angezeigt, wenn Sie postgre mit brew auf eine Hauptversion upgraden. Mit brew info postgresql haben wir herausgefunden, dass dies geholfen hat:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
8
Crazy Barney

wenn Ihr postmaster.pid weg ist und Sie keinen Neustart durchführen können, tun Sie Folgendes:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

wie erklärt hier anfangs

8
Antoine

Dieses Problem hat viele Quellen und somit viele Antworten. Ich habe jeden von ihnen erlebt.

1) Wenn Sie einen Absturz haben, ist es wahrscheinlich erforderlich, die Datei /usr/local/var/postgres/postmaster.pid zu entfernen, da Postgres dies möglicherweise nicht richtig gehandhabt hat. Stellen Sie jedoch sicher, dass kein Prozess läuft.

2) Craig Ringer hat in anderen Beiträgen darauf hingewiesen, dass Apples Bündelung von PostgreSQL zu Problemen bei der Installation von pg gem führt Das Einstellen der Umgebungsvariable PATH ist eine Lösung.

3) Eine andere Lösung besteht darin, den Edelstein zu deinstallieren und erneut zu installieren. Möglicherweise ist auch ein Brühupdate erforderlich.

Wenn Sie über diesen Beitrag stolpern, wenn Sie eine der Quellen ermitteln können, sparen Sie Zeit ...

7
Jerome

Hallo Welt :)
Der beste, aber seltsamste Weg für mich war, die nächsten Dinge zu tun.

1) postgres93.app oder andere Version herunterladen. Fügen Sie diese App in den Ordner/Applications/ein.

2) Fügen Sie der Datei .bash_profile (die sich in meinem Heimatverzeichnis befindet) eine Zeile (Befehl) hinzu:

export PATH =/Applications/Postgres93.app/Contents/MacOS/bin /: $ PATH
Es ist ein PFAD für psql von Postgres93.app. Die Zeile (Befehl) wird bei jedem Start der Konsole ausgeführt.

3) Starten Sie Postgres93.app aus dem /Applications/-Ordner. Es startet einen lokalen Server (Port ist "5432" und Host ist "localhost").

4) Nach all diesen Manipulationen war ich froh, $ createuser -SRDP user_name und andere Befehle auszuführen und zu sehen, dass es funktionierte! Postgres93.app kann bei jedem Systemstart ausgeführt werden.

5) Wenn Sie Ihre Datenbanken grafisch anzeigen möchten, sollten Sie PG Commander.app installieren. Es ist eine gute Möglichkeit, Ihre Postgres-Datenbank als hübsche Datentabellen zu sehen

Natürlich ist es nur für lokale Server hilfreich. Ich würde mich freuen, wenn diese Anleitung anderen hilft, die mit diesem Problem konfrontiert sind.

7
crazzyaka

Für mich war die Lösung einfach ein Neustart meines Computers. Ich habe zuerst einen Neustart mit Brew-Diensten versucht, und als dies nicht funktionierte, schien ein Neustart die nächstbeste Option zu sein, bevor man sich mit den komplizierteren Lösungen befasste. Alles hat so funktioniert, wie es danach sein sollte. 

5
Matt Lemieux

Ich war hier mit einem ähnlichen Problem konfrontiert. Ich habe dieses Problem wie folgt gelöst.

Tatsächlich ist der Postgres-Prozess tot, um zu sehen, wie der Postgres-Status den folgenden Befehl ausführt 

Sudo /etc/init.d/postgres status

Es wird gesagt, dass der Prozess tot ist. Starten Sie einfach den Prozess

Sudo /etc/init.d/postgres start
4

Dies geschah bei mir, nachdem mein Mac (High Sierra) eingefroren hatte und ich ihn manuell neu starten musste (den Netzschalter gedrückt halten). Alles was ich tun musste, um das Problem zu beheben, war ein sauberer Neustart.

3
skwidbreth

Mein Problem endete damit, dass ich Gas Mask (einen Host-Dateimanager für Mac) verwendete, und ich hatte keinen Eintrag für localhost in der Hosts-Datei, die ich verwendete.

Ich fügte hinzu:

127.0.0.1 localhost

Und das hat mein Problem gelöst.

3
jawns317

Es gibt viele Ursachen für diesen Fehler. Suchen Sie daher zunächst Ihre Protokolldatei und suchen Sie nach Hinweisen. Es könnte sich um /usr/local/var/log/postgres.log oder /usr/local/var/postgres/server.log oder möglicherweise anderswo handeln. Wenn Sie mit Homebrew installiert haben, finden Sie den Speicherort in ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
Tamlyn

Ich hatte das gleiche Problem ... Meistens ist das Problem, dass eine Datei übrig ist

/usr/local/var/postgres/postmaster.pid

was für die meisten Leute funktioniert, aber mein Fall war anders - ich habe versucht, dieses Problem für die letzten 3 Stunden zu googeln, Postresql unter OSX durch Brühen zu deinstallieren, die Datenbank zu löschen, nichts hat funktioniert.

Schließlich bemerkte ich, dass ich ein Problem mit Brew hatte, das bei jedem Versuch, etwas zu installieren, auftauchte:

Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

oder etwas ähnliches am Ende einer Installation.

Ich habe einfach Sudo chmod -R 777 /private/tmp gemacht und es funktioniert endlich!

Ich schreibe das auf, weil dies eine Lösung für jemand anderen sein könnte

1
Maciej Pk

Nach einigen Suchanfragen fand ich ein ähnliches Problem und eine einfache Antwort für mich, die funktionierte: "Aktualisieren Sie einfach Ihre vorhandene auf die neuere Version mit dem folgenden Befehl":

brew postgresql-upgrade-database

Vielen Dank an ssamateh 's Antwort zu diesem verwandten Thema

1
OBrooks

Gehe zu /var/log/ und starte cat postgres.log Hier findest du den Grund für das Versagen von Postgres. Wenn es sich um ein intelligentes Herunterfahren handelt, ist wahrscheinlich Ihre icu4c -Version (C++ - Bibliothek für Unicode) nicht korrekt und mit postgres verknüpft. Führen Sie daher die folgenden Befehle aus.

brew upgradebrew cleanup Das sollte funktionieren;)

0
shishir bondre

Ich habe gerade das gleiche Problem bekommen, als ich meinen Rechner (ubuntu) für ein Update zur Verfügung gestellt habe und folgende Fehlermeldung erhalten habe:

verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder Verzeichnis ist der Server Lokal ausgeführt und Verbindungen auf Unix-Domänensockel akzeptieren "/var/run/postgresql/.s.PGSQL.5432"?

Nach dem Abschluss des Aktualisierungsvorgangs ist nach einem Neustart mein Systemfehler nicht mehr vorhanden. Und es wirkt wie mit Charme, wie vorher ... Ich denke, dies geschah, als pg aktualisiert wurde und ein anderer Prozess begann. 

0
Gagan Gami

Ich bin nicht ganz sicher, warum, aber meine Postgres-Installation wurde ein wenig durchgebrannt und einige Dateien wurden gelöscht, was zu einem Fehler führt, den OP anzeigt. 

Obwohl ich in der Lage bin, Befehle wie brew service retart postgres auszuführen und die richtigen Meldungen zu sehen, blieb dieser Fehler bestehen. 

Ich ging die Postgres-Dokumentation durch und stellte fest, dass meine Datei /usr/local/var/postgres völlig leer war. Also lief ich folgendes: 

initdb /usr/local/var/postgres

Es scheint, dass einige Konfigurationen mit diesem Befehl stattgefunden haben. 

Dann hat es mich gebeten, dies auszuführen:

postgres -D /usr/local/var/postgres

Und das sagte mir, dass bereits eine postmaster.pid-Datei existiert. 

Ich musste nur wissen, ob brew die Konfigurationsdateien abholen kann, die ich gerade lief, also habe ich es getestet. 

ls /usr/local/var/postgres

Das zeigte mir eine postmaster.pid-Datei. Ich habe dann brew services stop postgresql gemacht, und die postmaster.pid-Datei ist verschwunden. Dann habe ich brew services start postgresql und VIOLA, die Datei erschien wieder. 

Dann habe ich meine App ausgeführt, die tatsächlich den Server gefunden hat, aber meine Datenbanken scheinen verschwunden zu sein. 

Obwohl ich weiß, dass sie möglicherweise gar nicht verschwunden sind - die neue Initialisierung, die ich durchgeführt habe, hat möglicherweise einen neuen data_area erstellt, und auf die alte wird nicht hingewiesen. Ich muss nachsehen, wo das ist und es wieder neu anzeigen oder einfach meine Datenbanken neu erstellen. 

Hoffe das hilft! Das Lesen der Postgres-Dokumente hat mir sehr geholfen. Ich hasse es, Antworten zu lesen, die wie "Einfügen, das funktioniert!" weil ich nicht weiß, was zur Hölle passiert und warum. 

0
Nick Res

Ich musste diesen Beitrag mehrmals nachschlagen, um dieses Problem zu lösen. Es gibt ein weiteres Update, das sich auch auf ähnliche Probleme mit anderen laufenden Programmen bezieht.

Ich habe gerade entdeckt, dass Sie die folgenden zwei Befehle verwenden können. 

$ top 

Daraufhin werden alle aktuell laufenden Aktionen mit ihren PID-Nummern angezeigt. Wenn Sie Postgres und die dazugehörige PID finden 

$ kill pid_number

0
cohart

@Jagdish Barabaris Antwort gab mir den Anhaltspunkt, den ich brauchte, um das zu lösen. Es stellte sich heraus, dass zwei Versionen von postgresql installiert waren, während nur eine ausgeführt wurde. Durch das Löschen aller Postgresql-Dateien und die Neuinstallation der neuesten Version wurde dieses Problem für mich behoben.

0
5280Angel

SUPER NEWBIE ALERT: Ich lerne gerade Web-Entwicklung und das spezielle Tutorial, das ich verfolgt habe, erwähnte, dass ich Postgres installieren muss, aber nicht wirklich erwähnte, dass ichrunes auch ... Die Postgres-Anwendung wurde geöffnet und alles war in Ordnung.

0
Lorenzo

Ich habe/usr/lib aus dem LD_LIBRARY_PATH entfernt und es hat funktioniert. Ich habe in dockerfile postgres gearbeitet: Alpine.

0
ddtraveller