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

Nach dem Neustart meines Mac habe 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 damit zusammenhängenden Problems komplett eingefroren war und ich einen Neustart mit dem Power-Button durchführen musste. Nach dem Neustart konnte ich Postgres wegen dieses Fehlers nicht starten.

   

WARNUNG: Wenn Sie postmaster.pid löschen, ohne sicherzustellen, dass wirklich keine postgres processe ausgeführt werden, könnte Ihre database dauerhaft postgres werden . (PostgreSQL sollte es automatisch löschen, wenn der Postmaster beendet wurde.).

LÖSUNG: Dies behebt das Problem – ich habe diese Datei gelöscht, und dann hat alles funktioniert!

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

und hier habe ich herausgefunden, warum das gelöscht werden musste.

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

     ps auxw | grep post 
  2. Ich suchte nach der Datei .sPGSQL.5432, die in der obigen Fehlermeldung enthalten war. Ich habe den folgenden Befehl verwendet:

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

    Dies zeigte nichts nach dem Durchsuchen meines ganzen Computers, so dass die Datei nicht existierte, aber offensichtlich psql “wollte es” oder “dachte, dass es da war”.

  3. Ich habe mir die 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. Dem Hinweis in der Fehlermeldung folgend, löschte ich die postmaster.pid-Datei in demselben Verzeichnis wie server.log. Das Problem wurde behoben und ich konnte neu starten.

Also, es scheint, dass mein Macbook Einfrieren und Hard-Reboot wurde Postgre zu denken, dass seine processe noch nach dem Neustart ausgeführt wurde. Das Löschen dieser Datei wurde getriggers. Hoffe das hilft anderen! Viele Leute haben ähnliche Probleme, aber die meisten Antworten haben mit Dateiberechtigungen zu tun, während in meinem Fall die Dinge anders waren.

Wenn Sie über Homebrew installiert haben, verwenden Sie den folgenden Befehl

 brew services stop postgresql brew services start postgresql 

Wenn Ihr Ubuntu der folgende Befehl funktioniert, starten Sie den Server einfach durch Ausführen neu

 $sudo service postgresql restart 

oder

 sudo /etc/init.d/postgresql restart 

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

  • Deinstallieren Postgresql mit brauen: brew uninstall postgresql
  • brew doctor (repariere, was auch immer hier ist)
  • brew prune
  • Entfernen Sie alle Postgres-Ordner:

    • rm -r /usr/local/var/postgres
    • rm -r /Users//Library/Application\ Support/Postgres
  • Installieren Sie postgresql mit brew: brew install postgresql

  • Server starten: brew services start postgresql
  • Sie sollten jetzt Ihre databaseen erstellen müssen … ( createdb )

Hallo Welt 🙂
Die beste aber seltsame Art für mich war, die nächsten Dinge zu tun.

1) Lade postgres93.app oder eine andere Version herunter. Fügen Sie diese App in den Ordner / Programme / hinzu.

2) Fügen Sie eine Zeile (Befehl) in die Datei .bash_profile (in meinem Home-Verzeichnis) ein:

  export PATH = / Anwendungen / Postgres93.app / Contents / MacOS / bin /: $ PATH 

Es ist ein Pfad zu psql von Postgres93.app . Die Zeile (der Befehl) wird jedes Mal ausgeführt, wenn die Konsole gestartet wird.

3) Starten Sie Postgres93.app aus dem Ordner /Applications/ . 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 funktioniert hat! Postgres93.app kann bei jedem Systemstart ausgeführt werden.

5) Auch wenn Sie Ihre databaseen grafisch sehen wollen, sollten Sie PG Commander.app installieren. Es ist eine gute Möglichkeit, Ihre Postgres-DB 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.

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

1) Wenn Sie einen Absturz haben, ist es wahrscheinlich notwendig, die Datei /usr/local/var/postgres/postmaster.pid zu entfernen, da postgres sie möglicherweise nicht korrekt behandelt hat. Stellen Sie jedoch sicher, dass kein process ausgeführt wird.

2) Craig Ringer hat in anderen Beiträgen darauf hingewiesen, dass Apples Bündelung von postgreSQL zu PG- Installationsproblemen führt. Die Einstellung der PATH-Umgebungsvariablen ist eine Lösung.

3) Eine andere Lösung ist, den Edelstein zu deinstallieren und neu zu installieren. Ein Brew Update kann ebenfalls notwendig sein.

Wenn Sie auf diesen Beitrag stoßen, wenn Sie eine der Quellen lokalisieren können, sparen Sie Zeit …

Wenn dein postmaster.pid weg ist und du nicht neu starten kannst, mach folgendes:

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

wie eingangs erläutert

Ich hatte hier ein ähnliches Problem. Ich habe dieses Problem wie folgt getriggers.

Eigentlich ist der Postgres-process tot. Um den Status von Postgres zu sehen, führen Sie den folgenden Befehl aus

 sudo /etc/init.d/postgres status 

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

 sudo /etc/init.d/postgres start 

Für mich war die Lösung einfach meinen Computer neu zu starten. Ich habe zuerst versucht, mit Brew-Diensten neu zu starten, und als das nicht funktionierte, schien der Neustart die nächstbeste Option zu sein, bevor ich mich mit einigen der komplizierteren Lösungen beschäftigte. Alles funktionierte wie es sollte danach.

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

Ich fügte hinzu:

 127.0.0.1 localhost 

Und das hat mein Problem getriggers.

Das passierte mir, nachdem mein Mac (High Sierra) erstarrt war und ich ihn manuell neu starten musste (drücken und halten Sie den Netzschalter). Alles, was ich tun musste, um es zu beheben, war einen sauberen Neustart.

Vielleicht ist dies nicht verwandt, aber ein ähnlicher Fehler erscheint, wenn Sie postgre auf eine Hauptversion aktualisieren, die brew ; mit brew info postgresql herausgefunden, das half:

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

Ich musste diesen Eintrag mehrmals nachschlagen, um dieses Problem zu lösen. Es gibt einen weiteren Fix, der auch für ähnliche Probleme mit anderen laufenden Programmen gilt.

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

$ top

Dadurch werden alle laufenden Aktionen mit ihren PID-Nummern angezeigt. Wenn Sie postgres und die zugehörige PID finden

$ kill pid_number

Ich habe gerade das gleiche Problem, wie ich meine Maschine ( ubuntu ) für das Update und bekam unter Fehler:

Verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder Verzeichnis Wird der Server lokal ausgeführt und akzeptiert Verbindungen auf dem Unix-Domain-Socket “/var/run/postgresql/.s.PGSQL.5432”?

Nach Abschluss des Update-processes, wenn ich neu starte, ist mein Systemerrors verschwunden. Und seine Arbeit mag Charme wie vorher. Ich denke, das war passiert, als pg wurde aktualisiert und ein weiterer process begann.

SUPER NEWBIE ALERT: Ich lerne gerade Webentwicklung und das spezielle Tutorial, dem ich folgte, erwähnte, dass ich Postgres installieren muss, aber nicht wirklich erwähnt habe, dass ich es auch ausführen muss … Nachdem ich die Postgres-Anwendung geöffnet hatte, war alles in Ordnung Dandy.

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

Die Ursachen für diesen Fehler sind viele, also suchen Sie zuerst Ihre Protokolldatei und überprüfen Sie sie auf Hinweise. Es könnte in /usr/local/var/log/postgres.log oder /usr/local/var/postgres/server.log oder möglicherweise anderswo sein. Wenn Sie mit Homebrew installiert haben, finden Sie den Speicherort in ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist .

Ich bin nicht ganz sicher, warum, aber meine Postgres-Installation wurde ein wenig verschraubt und einige Dateien wurden gelöscht, was zu dem Fehler führte, den OP zeigt.

Trotz der Tatsache, dass ich in der Lage bin, Befehle wie brew service retart postgres und die richtigen Nachrichten zu sehen, blieb dieser Fehler bestehen.

Ich ging durch die Postgres-Dokumentation und fand heraus, dass meine Datei /usr/local/var/postgres völlig leer war. Also habe ich folgendes ausgeführt:

 initdb /usr/local/var/postgres 

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

Dann hat es mich gebeten, das auszuführen:

 postgres -D /usr/local/var/postgres 

Und das sagte mir eine postmaster.pid Datei existiert bereits.

Ich musste nur wissen, ob Brew in der Lage wäre, die Konfigurationen, die ich gerade ausgeführt habe, zu übernehmen, also habe ich es getestet.

 ls /usr/local/var/postgres 

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

Dann ging ich weiter und führte meine App, die tatsächlich den Server gefunden hat, aber meine databaseen scheinen weg zu sein.

Obwohl ich weiß, dass sie überhaupt nicht weg sind – die neue Initialisierung, die ich gemacht habe, hat möglicherweise einen neuen Datenbereich erzeugt, und auf den alten wird nicht hingewiesen. Ich müsste schauen, wo das ist, und dann wieder darauf zeigen oder einfach meine databaseen neu erstellen.

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