Es kann keine Verbindung zum Postgres-Server hergestellt werden, der über Brühdienste ausgeführt wird

79

Ich habe nach einer Lösung dafür gesucht und konnte keine funktionierende Lösung finden.

Ich habe Postgres mit Brew ( brew install postgres) in meinem MacBook installiert und führe es derzeit mit brew services list Brew- Diensten aus ( zeigt Postgres als laufenden Dienst an). Wenn ich jedoch versuche auszuführen psql, wird folgende Fehlermeldung angezeigt.

psql: Verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder kein solches Verzeichnis Wird der Server lokal ausgeführt und akzeptiert Verbindungen auf dem Unix-Domain-Socket "/tmp/.s.PGSQL.5432"?

Hat jemand schon ein ähnliches Problem gelöst?

leo.fcx
quelle

Antworten:

185

Ich hatte den gleichen Fehler und habe ihn durch Entfernen der Prozess-PID-Datei behoben:

rm -f /usr/local/var/postgres/postmaster.pid

Wilson Silva
quelle
Danke, es funktioniert! Aber wieso? Wie? Habe ich diesen Befehl nach jedem Neustart ausgeführt?
Rap-2-h
13
@ rap-2-h Es scheint, dass Postgres nicht richtig heruntergefahren wird. Ich bekomme dieses Problem, wenn ich meinen Mac durch Halten des Netzschalters herunterfahren muss.
Wilson Silva
6
Wenn Sie ein Fass einer bestimmten Version verwenden (Beispiel: [email protected]), stellen Sie sicher, dass Sie den richtigen Ordner anstelle von "/ postgres /" verwenden
Vjatseslav Gedrovits
1
Dies hängt in der Tat damit zusammen, dass Postgres von macOS nicht ordnungsgemäß heruntergefahren wurde, aber für mich geschah dies sogar, als ich das Apple-Menü + die Option "Herunterfahren ..." verwendete, sodass es nicht speziell mit dem erzwungenen Herunterfahren zusammenhängt (zumindest nicht mehr) macOS 10.14.3). Dies hat es behoben, Daumen hoch (y)
SidOfc
Wenn dies nicht funktioniert, versuchen Sie es tail /usr/local/var/log/postgres.log. Dies kann Ihnen weitere Informationen darüber geben, warum Postgres fehlschlägt. Normalerweise können Sie die Fehlermeldung aus diesem Protokoll in Google veröffentlichen und einen weiteren Fix für StackOverflow finden :-D
edan
81

Ich bin heute auf dieses Problem gestoßen. postgres akzeptierte keine Verbindungen mehr, obwohl Homebrew dachte, dass es läuft.

Um es zu beheben, lief ich,

brew services restart -vvv postgresql

Ausgabe von diesem Befehl,

==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Generated plist for postgresql:
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
   <dict>
     <key>KeepAlive</key>
     <true/>
     <key>Label</key>
     <string>homebrew.mxcl.postgresql</string>
     <key>ProgramArguments</key>
     <array>
       <string>/usr/local/opt/postgresql/bin/postgres</string>
       <string>-D</string>
       <string>/usr/local/var/postgres</string>
     </array>
     <key>RunAtLoad</key>
     <true/>
     <key>WorkingDirectory</key>
     <string>/usr/local</string>
     <key>StandardErrorPath</key>
     <string>/usr/local/var/log/postgres.log</string>
   </dict>
   </plist>

Dann dachte ich, hmm, vielleicht ist etwas in dieser Protokolldatei,

tail -n 10 /usr/local/var/log/postgres.log

Sicher genug,

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

Also habe ich diese Datei entfernt

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

Und alles fing wieder an zu funktionieren.

Eric Conner
quelle
6
Der nützlichste Befehl für mich wartail -n 10 /usr/local/var/log/postgres.log
Nick Roz
35

In meinem Fall war die postmaster.pidDatei nicht einmal da. Habe es durch ein Upgrade von Postgres zum Laufen gebracht.

brew update
brew upgrade

Da ich dann die Hauptversion von 10 auf 11 aktualisiert habe, musste ich auch Folgendes ausführen:

brew postgresql-upgrade-database

(Quelle https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )

Nelu
quelle
3
In diesen Fällen enthält die /usr/local/var/log/postgres.logDatei möglicherweise die letzten Protokolle: FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 12.2.
dijonkitchen
Ich habe genau dieses Problem. Das Upgrade von Postgresql 11 auf 12 ist fehlgeschlagen, aber die Deinstallation und erneute Installation haben geholfen.
FooF
15

Ich würde die beiden Antworten von Wilson und Grasshopper hier kombinieren.

Sie können die Plist-Datei für den Postgres-Dienst überprüfen, indem brew services listSie den Speicherort der Datei ermitteln und sie einfach in Ihrem bevorzugten Editor öffnen.

Sie sollten den Wert von wie StandardErrorPathfolgt sehen:

<key>StandardErrorPath</key>
<string>/usr/local/var/log/postgres.log</string>

Und dann sollten Sie das Ende der Protokolldatei mit verfolgen tail -n 100 /usr/local/var/log/postgres.log

In meinem Fall war der Fehler der folgende:

2017-12-06 11: 51: 16.078 GMT [85476] FATAL: Sperrdatei "postmaster.pid" existiert bereits 2017-12-06 11: 51: 16.078 GMT [85476] TIPP: Läuft ein anderer Postmaster (PID 601) ein Datenverzeichnis "/ usr / local / var / postgres"?

Dies lag daran, dass ich meinen Mac hart herunterfahren musste und postgres keine Chance hatte, die PID-Datei zu bereinigen. Entfernen Sie einfach die PID-Datei rm /usr/local/var/postgres/postmaster.pidund starten Sie postgresbrew services start postgresql

Ein Wort der Warnung: Löschen Sie diese PID-Datei nur, wenn Sie sicher sind, dass postgres nicht ausgeführt wird . Sie können dies tun, indem Sie ausführen brew services stop postgresqlund dann darauf warten, dass das Ergebnis brew services listangezeigt wird, dass posgres im gestoppten Zustand ist.

real_ate
quelle
5

Was für mich funktionierte, war das Entfernen des /usr/local/var/postgres/Ordners und das Deinstallieren und erneute Installieren von postgres

António Ferreira
quelle
7
Sie sollten vorher andere Antworten ausprobieren.
Jean
3

Ich habe den gleichen Fehler bei der Installation von postgresql93 von den Versionen tap erhalten. Beim Überprüfen der in der Ausgabe von brew services list( ~/Library/LaunchAgents/homebrew.mxcl.postgresql93.plist) angegebenen .plist-Datei wurde die folgende Meldung gefunden:

FATAL: Das Datenverzeichnis "/ usr / local / var / postgres" hat Gruppen- oder Weltzugriff.
DETAIL: Berechtigungen sollten u = rwx (0700) sein.

Was mich zu dieser Antwort führte: Das Datenverzeichnis "/ usr / local / var / postgres" hat einen falschen Besitz

Nach dem Ausführen habe sudo chmod -R 700 /usr/local/var/postgresich einen anderen Fehler erhalten:

FATAL: Verzeichnis "pg_tblspc" konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Was mich dann zu folgendem führte: `pg_tblspc` fehlt nach der Installation der neuesten Version von OS X (Yosemite oder El Capitan)

Nach dem Ausführen wurde mkdir /usr/local/var/postgres/pg_tblspc/der Cluster erfolgreich gestartet.

Heuschrecke
quelle
1

Aktualisieren Sie es mit dem Befehl

  brew postgresql-upgrade-database

Wenn Sie den folgenden Fehler haben Befehl 'Brew' wurde nicht gefunden, kann aber installiert werden mit: sudo apt install linuxbrew-wrapper

Installieren Sie es dann mit dem Befehl

 sudo apt install linuxbrew-wrapper
Nadeem Qasmi
quelle
1

Wenn Sie mehrere Versionen von postgresql haben, können Sie mit den folgenden Befehlen pid entfernen und neu starten. Stellen Sie einfach sicher, dass Sie die richtige Version auswählen.

rm -f /usr/local/var/[email protected]/postmaster.pid

brew services restart [email protected]   
Dave
quelle
0

In meinem Fall postgres.logenthält die Datei Folgendes: HINT: Is another postmaster already running on port 5432? If not, remove socket file "/tmp/.s.PGSQL.5432" and retry.Nach dem Entfernen der Socket-Datei und dem Neustart hat alles einwandfrei funktioniert. Beachten Sie, dass dies eine versteckte Datei ist und im Fensterbrowser nicht sichtbar ist. Das Entfernen sollte über die Befehlszeile erfolgen.

Die RealDuke
quelle