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.
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.
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
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".
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".
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.
Keines der oben genannten Dinge funktionierte für mich. Ich musste Postgres folgendermaßen neu installieren:
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
brew services start postgresql
createdb
)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
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
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
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 ...
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 /: $ PATHEs 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.
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.
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
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.
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.
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
.
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
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
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 upgrade
brew cleanup
Das sollte funktionieren;)
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.
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.
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
@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.
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.
Ich habe/usr/lib aus dem LD_LIBRARY_PATH entfernt und es hat funktioniert. Ich habe in dockerfile postgres gearbeitet: Alpine.