Postgres DB startet nicht unter Mac OSX: ERROR sagt: Verbindungen auf Unix Domain Socket [geschlossen]

80

Ich habe Postgresql installiert und dann eine Reihe von Rails-Apps auf meinem lokalen Mac OSX Mountain Lion ausgeführt und Datenbanken usw. erstellt. Nach einer Weile, als ich pgAdminIII startete und versuchte, einen Datenbankserver zu starten, wurde folgende Fehlermeldung angezeigt:

Geben Sie hier die Bildbeschreibung ein

Ein kurzer Google zeigte diesen Beitrag. Mehr Browsing deutete auf die Tatsache hin, dass möglicherweise eine Art postmaster.pid-Datei herumliegt, die die Hauptursache dafür sein könnte. Wenn ich das lösche, wäre alles in Ordnung.

Bevor ich jedoch Dinge auf meinem Computer lösche, wollte ich sicherstellen, dass ich dies systematisch debugge, was nicht zu weiteren Problemen führen würde.

Irgendwo habe ich gelesen, dass ich vor dem Löschen dieser Datei diesen Befehl ausführen muss:

  ps auxw | grep post

Wenn ich dann keine Ergebnisse erhalte, ist es in Ordnung, die Datei zu löschen. Sonst nicht. Nun, ich habe das Ergebnis dieses Befehls erhalten:

  AM               476   0.0  0.0  2423356    184 s000  R+    9:28pm   0:00.00 grep post

Jetzt bin ich natürlich völlig verwirrt.

Also was soll ich tun?

Hier ist ein Teil meines Postgres-Server-Fehlerprotokolls:

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

Postgresql läuft immer noch nicht, es wird immer noch der gleiche Fehler angezeigt und nichts hat sich geändert. Ich bin zu huhn, um Dinge zu löschen, ohne SO zu überprüfen.

Könnten einige von Ihnen Experten bitte einen Noob führen.

Vielen Dank

BanditKing
quelle
Erstens bin ich kein Experte. Trotzdem klingt es so, als ob Ihre Datenbank nicht richtig heruntergefahren wurde. Ich würde die PID-Datei entfernen und versuchen, die Datenbank zu starten.
Fbynite
Ja, das ist es, was ich tun möchte, aber ich habe irgendwo gelesen, dass dies die Datenbank dauerhaft beschädigen kann, wenn eine PID ausgeführt wird, während dies ausgeführt wird. Ich
bin
@banditKing Sie sollten niemals löschen müssen postmaster.pid. Der Server löscht es beim Start, wenn es ungültig (veraltet) ist, und es ist wichtig für den Datenschutz. Bitte erläutern Sie zunächst , wie Sie PostgreSQL auf Ihrem Computer installiert haben - über EnterpriseDB Installer, Homebrew, Postgres.app, was? Erwähnen Sie auch die PostgreSQL-Version. Wenn Sie den Verbindungsoptionen in Pgadmin-III explizit "localhost" hinzufügen, funktioniert dies schließlich? Wenn ja, werden Sie von einer wirklich schlechten Verpackungsentscheidung gebissen, die Apple vor einiger Zeit getroffen hat ...
Craig Ringer
@CraigRinger danke für die Klarstellung. Ich erinnere mich nicht, wie ich es installiert habe, es war vor einer Weile. Kann ich irgendetwas tun? Oder die Daten dort sind nur Testdaten, sodass ich im schlimmsten Fall deinstallieren und neu installieren kann. Irgendwelche guten Blogs / Tutorials, wie man das richtig macht?
BanditKing
1
@banditKing Neustart versucht? Daraus können Sie ableiten , wie Sie installiert haben: wiki.postgresql.org/wiki/Installers/Mac_OS_X . Es sieht so aus, als hätten Sie wahrscheinlich Homebrew verwendet. Wenn der PostgreSQL-Server fälschlicherweise nicht gelöscht werden postmaster.pidkann, können Sie ihn entfernen, nachdem Sie überprüft haben, dass keine postgresProzesse ausgeführt werden. Es ist nur wichtig, dass Sie sicher sind, dass tatsächlich keine PostgreSQL-Prozesse vorhanden sind. Das Versagen des Servers, einen veralteten zu entfernen, postmaster.pidscheint mir jedoch ein Fehler zu sein.
Craig Ringer

Antworten:

188

Ich hatte heute das gleiche Problem auf Mac Sierra. In Mac Sierra finden Sie postmaster.pidinnen /Users/<user_name>/Library/Application Support/Postgres/var-9.6. Löschen postmaster.pidund Problem wird behoben.

r3b00t
quelle
19
An postmaster.piddieser Stelle gelöscht und das Problem behoben. Vielen Dank!
JLF
1
Hier musste ich auch die postmaster.pidDatei finden, da ich die Postgres.app
Jarsen
3
Für Postgres.app ist es dasselbe: könnte sein, dass es sich hier befindet/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
Simon Franzen
1
Ich benutze auch die Postgres.app mit v10. Wenn mein Mac während der Ausführung von Postgres unerwartet heruntergefahren wird, muss ich die Datei postmaster.pid löschen, wenn ich den Computer neu starte. Weiß jemand, ob dies das erwartete Verhalten der App ist? Scheint wie ein seltsames Design, wenn absichtlich.
Alexander
Stellen Sie sicher, dass der Prozess heruntergefahren ist, bevor Sie diese Datei entfernen. Sie können cat postmaster.pidin dem Verzeichnis ausgeführt werden, um einen Blick darauf zu werfen und darauf zu verweisen, dass die PID nicht in einem Aktivitätsmonitor ausgeführt wird. Die Postgres-Benutzeroberfläche wird Sie darauf aufmerksam machen, aber ich dachte, ich sollte es hier einfügen, bevor die Leute wohl oder übel werden und wie Sie sich selbst überprüfen können. Es sollte auch ausreichen, postgresim Aktivitätsmonitor nach etwas zu suchen und alles zu beenden, was damit zusammenhängt, oder einfach das System neu zu starten und dann die Datei zu löschen. Wenn
Sie
37

Dies kann passieren, wenn die Datenbank nicht ordnungsgemäß heruntergefahren wurde.

Um dies zu beheben, löschen Sie die Datei postmaster.pid:

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

Oder sichern Sie es:

 mv /usr/local/var/postgres/postmaster.pid /usr/local/var/postgres/postmaster.pid.backup
sqren
quelle
2
Danke, diese Lösung funktioniert! Nach dem Entfernen postmaster.pidund Ausführen postgres -D /usr/local/var/postgreswird ich über die Fehlerursache informiert: "Das Datenbanksystem wurde nicht ordnungsgemäß heruntergefahren; automatische Wiederherstellung läuft"
Hoang Le
Dies löste mein Problem
Fabrice Yopa
Das funktioniert. In meinem Fall wurde die PID-Datei aufgrund eines harten Neustarts nicht entfernt und musste nur gesichert werden.
George C
21

Ich habe die Datenbank jetzt funktioniert.

Hier sind die Schritte, die ich unternommen habe:

  1. Ich habe meinen Computer neu gestartet
  2. Ich öffnete das Terminal und rannte los cd /
  3. Dann habe ich getan ls -la
  4. Sichergestellt, dass ich dazu kommen konnte MackintoshHD/usr/local/var/postgres
  5. Dann tat ls -la
  6. Hier habe ich die Datei postmaster.pid gesehen
  7. Ich habe diesen Befehl ausgeführt, mit cp postmaster.pid ~/Desktopdem die Datei auf meinen Desktop kopiert wurde. Ich mache das gerne, wenn ich Dateien lösche. Wenn etwas schief geht, kann ich es zurückstellen
  8. Dann habe ich diesen Befehl ausgeführt, um die Datei aus dem Postgres-Verzeichnis zu entfernen rm -r postmaster.pid
  9. Ich ging zu meiner pgadmin3-GUI und feuerte sie an. und Voila hat es geklappt :)

Vielen Dank an @Craig Ringer für seine Hilfe

BanditKing
quelle
6
Meins befand sich nicht in / usr / local / var / postgres, sondern in / Users / [myhome] / Library / Anwendungsunterstützung / Postgres / var-9.5 / - Das letzte Verzeichnis hängt von Ihrer Version ab, löschte postmaster.pid und funktionierte wie ein Zauber. danke
Radek
4

Ich verwende Postgres.app und das Folgende hat für mich funktioniert:

Ich habe die Befehle in mein Terminal unten eingegeben, den Postgres-Ordner vorher gesucht und nicht "justin" verwendet.

$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4"

$pg_ctl restart -m immediate

Wie Justin in seinem Beitrag erklärt, lautete die Ausgabe danach:

Warten auf das Herunterfahren des Servers ……………………………………………………… fehlgeschlagen pg_ctl: Server wird nicht heruntergefahren

Nach erneuter Eingabe des Befehls:

$pg_ctl restart -m immediate

Es hat funktioniert und ich habe diese Nachricht erhalten:

pg_ctl: Der alte Serverprozess (PID: 373) scheint ohnehin verschwunden zu sein. Der Server wird trotzdem gestartet. Der Server startet LOG: Das Datenbanksystem wurde unterbrochen. Zuletzt bekannt am 2015-07-28 18:15:26 PDT LOG: Das Datenbanksystem wurde nicht ordnungsgemäß heruntergefahren. Automatische Wiederherstellung läuft LOG: Datensatz mit der Länge Null bei 0 / 4F0F7A8 LOG: Wiederherstellen ist nicht erforderlich LOG: Datenbanksystem ist bereit, Verbindungen zu akzeptieren LOG: Autovakuum-Starter gestartet

Quelle

Andrew Southard
quelle