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:
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
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 ...postmaster.pid
kann, können Sie ihn entfernen, nachdem Sie überprüft haben, dass keinepostgres
Prozesse 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.pid
scheint mir jedoch ein Fehler zu sein.Antworten:
Ich hatte heute das gleiche Problem auf Mac Sierra. In Mac Sierra finden Sie
postmaster.pid
innen/Users/<user_name>/Library/Application Support/Postgres/var-9.6
. Löschenpostmaster.pid
und Problem wird behoben.quelle
postmaster.pid
dieser Stelle gelöscht und das Problem behoben. Vielen Dank!postmaster.pid
Datei finden, da ich die Postgres.app/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
cat postmaster.pid
in 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,postgres
im 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. WennDies kann passieren, wenn die Datenbank nicht ordnungsgemäß heruntergefahren wurde.
Um dies zu beheben, löschen Sie die Datei postmaster.pid:
Oder sichern Sie es:
quelle
postmaster.pid
und Ausführenpostgres -D /usr/local/var/postgres
wird ich über die Fehlerursache informiert: "Das Datenbanksystem wurde nicht ordnungsgemäß heruntergefahren; automatische Wiederherstellung läuft"Ich habe die Datenbank jetzt funktioniert.
Hier sind die Schritte, die ich unternommen habe:
cd /
ls -la
MackintoshHD/usr/local/var/postgres
ls -la
cp postmaster.pid ~/Desktop
dem die Datei auf meinen Desktop kopiert wurde. Ich mache das gerne, wenn ich Dateien lösche. Wenn etwas schief geht, kann ich es zurückstellenrm -r postmaster.pid
Vielen Dank an @Craig Ringer für seine Hilfe
quelle
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:
Nach erneuter Eingabe des Befehls:
Es hat funktioniert und ich habe diese Nachricht erhalten:
Quelle
quelle