it-swarm.com.de

Homebrew installiert PostgreSQL konnte keine Verbindung herstellen, Datenbankdateien sind nicht mit dem Server kompatibel

Hier ist die Fehlermeldung, die ich heute erhalte, wenn ich versuche, mich mit psql bei meinen lokalen Hostg-PosgreSQL-Datenbanken anzumelden:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Ich habe PostgreSQL mit Homebrew installiert und heute Morgen mit diesem Dienstprogramm deinstalliert und neu installiert, ohne dass Änderungen erkennbar waren. Der Client psql funktioniert einwandfrei, und ich kann ihn weiterhin verwenden, um über das Netzwerk eine Verbindung zu Datenbanken herzustellen. Ich stelle nur ein oder zwei Mal im Monat eine Verbindung zu meinen lokalen Datenbanken her, und es hat vorher einwandfrei funktioniert. Ich gehe also davon aus, dass dies auf ein automatisches Update zurückzuführen ist, aber ich weiß nicht, welches. Mac OS hat sich kürzlich auf High Sierra (10.13) aktualisiert.

Die gleiche Fehlermeldung tauchte hier 2014 auf ( link ), aber das war ein Fall, in dem ein Typ Probleme hatte, den Server zu starten. In meinem Fall glaube ich, dass es läuft - ich habe brew services start postgresql und ja, ich habe heute ein paar Mal neu gestartet. Die im Fehler erwähnte Datei /tmp/.s.PGSQL.5432, existiert nicht auf meinem System. Ich denke, dies ist ein Fall von Konfigurationsfehlern. Hat jemand eine Ahnung, wie man das behebt?

Update: Ich habe versucht, den Server manuell zu starten (wie von Evan empfohlen) und ich glaube, ich habe einen Durchbruch erzielt. Hier ist der Fehler, den ich bekomme, wenn ich versuche, ihn manuell zu starten:

FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.1.

Update 2: Letztendlich habe ich dieses Problem gelöst, indem ich mein Datenverzeichnis ersetzt und es mit initdb wie in der mit "korrekt" gekennzeichneten Antwort durch eine leere Datenbank neu initialisiert habe. Um fair zu sein, waren alle drei Antworten hilfreich. Ich konnte die Datenbank nicht von der alten auf die neue Version aktualisieren, da ich nicht mehr über die Binärdateien für die ältere Version von Postgres verfügte.

7
workerjoe

Wenn Sie keine Daten haben, scheint dies ein Problem mit Brew zu sein. Haben Sie brew upgrade ausgeführt, gibt es zwei Antworten auf StackOverflow , die dies ansprechen. Ich habe beide zusammengeführt, um das Beste aus beiden Welten zu versuchen.

  1. Sichern

    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    Sudo mv /usr/local/var/postgres /usr/local/var/.postgres_bak;
    
  2. Stellen Sie sicher, dass Sie die neueste Version haben

    brew update
    brew upgrade postgresql
    
  3. Entweder nicht beide neu initialisieren oder versuchen, Ihr Datenverzeichnis zu aktualisieren

    1. Nuke es (von vorne anfangen, den alten zurücklassen)

      initdb /usr/local/var/postgres -E utf8
      
    2. Versuchen Sie es zu aktualisieren

      pg_upgrade -b /usr/local/Cellar/postgresql/$myOldVersion/bin/ -B /usr/local/Cellar/postgresql/$myNewVersion/bin -d /usr/local/var/.postgres_bak -D /usr/local/var/postgres
      
  4. Starten Sie den Server neu.

    brew services start postgresql
    
  5. Löschen Sie die Sicherung, wenn der Server neu gestartet wird und alles funktioniert, entfernen Sie die Sicherung

    Sudo rm -rf /usr/local/var/.postgres_bak
    
7
Evan Carroll

Hoffentlich haben Sie brew cleanup postgresql Noch nicht ausgeführt. brew info Gibt alle relevanten Informationen an, auch wenn Sie noch über die vorherige Version verfügen und möglicherweise pg_upgrade Ausführen müssen (verkürzte Ausgabe unten).

Hier erfahren Sie, auf welcher Version sich Ihre Datenbank befindet: cat /usr/local/var/postgres/PG_VERSION

Wenn Sie nicht auf PostgreSQL 10.1 aktualisieren wollten und davon ausgehen, dass Ihre vorherige Version 9.6.6 ist, könnte dies ausreichen: brew switch postgresql 9.6.6

Wenn Sie eine ältere Version neu installieren müssen, könnte dies funktionieren: https://stackoverflow.com/a/9832084/279726

Es sieht so aus, als ob das Datenverzeichnis standardmäßig /usr/local/var/postgres ist (da ich meins nicht geändert habe), siehe letzte Ausgabezeile unten.

$ brew info postgresql
postgresql: stable 10.1 (bottled), HEAD
[...]
==> Caveats
To migrate existing data from a previous major version of PostgreSQL, see:
  https://www.postgresql.org/docs/10/static/upgrading.html

  You will need your previous PostgreSQL installation from brew to perform
  `pg_upgrade` or `pg_dumpall` depending on your upgrade method.

  Do not run `brew cleanup postgresql` until you have performed the migration.

To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start
$

Wenn Sie jedoch 10.1 verwenden möchten, können Sie im Grunde so etwas wie this ausführen, vorausgesetzt, Sie haben zuvor 9.6.6 ausgeführt (ändern Sie den Verzeichnisnamen basierend auf Ihrem tatsächlichen vorherigen PostgreSQL Ausführung). Führen Sie jeweils den Befehl one aus und überprüfen Sie die Ausgabe, bevor Sie mit dem nächsten fortfahren:

mv -i /usr/local/var/postgres /usr/local/var/postgres96
mkdir /usr/local/var/postgres
pg_upgrade -b /usr/local/Cellar/postgresql/9.6.6/bin -B /usr/local/Cellar/postgresql/10.1/bin -d /usr/local/var/postgres96 -D /usr/local/var/postgres

Einzelheiten finden Sie hier: https://www.postgresql.org/docs/10/static/pgupgrade.html

********************************************************
* PLEASE MAKE BACKUPS BEFORE DOING ANY OF THE ABOVE!!! *
********************************************************

Das Lustige ist, wenn ich versuche, das neueste PostgreSQL zu installieren, das ich bekomme:

$ brew install postgresql
Error: postgresql 9.5.5 is already installed
To upgrade to 10.1, run `brew upgrade postgresql`

Ich bin mir also nicht sicher, wie Sie von 9.6.x auf 10.1 gekommen sind, ohne diese Nachricht zu sehen ...

1
Kamal
  • Haben Sie eine andere Version von PostgreSQL installiert oder nur die von Brew?
  • Läuft der Server selbst, damit Sie eine Verbindung herstellen können? Überprüfen Sie Sudo ps aux?
  • Stellen Sie eine Verbindung zum richtigen Port her? Check netstat see dieser großartige Beitrag von Craig .
  • Verwenden Sie Brew, um auf eine neue Version von PostgreSQL zu aktualisieren? Wenn ja, sollten Sie dies überprüfen hella-beliebte Frage zu Stackoverflow

Vielleicht möchten Sie auch diesen Beitrag sehen und Server manuell starten .

0
Evan Carroll