it-swarm.com.de

Postgresql nach einem Upgrade auf OSX Mavericks reparieren

Bei einem kürzlich durchgeführten Upgrade auf OSX Mavericks ist meine Datenbankverbindung für meine Rails-App unterbrochen.

Wenn ich versuche, von der Datenbank abzurufen, gibt der Server den folgenden Fehler zurück:

PG::ConnectionBad (could not connect to server: Connection refused
    Is the server running on Host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on Host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on Host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

Beim Versuch, psql auszuführen, bekomme ich:

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 viele der im Internet verfügbaren Lösungen ausprobiert. Eine solche Neuinstallation des pg-Gems und das Einstellen von Host: localhost in meiner database.yml. Meine /usr/local/var/postgres/pg_hba.conf -Datei sagt:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     RyanKing                                trust
#Host    replication     RyanKing        127.0.0.1/32            trust
#Host    replication     RyanKing        ::1/128                 trust

welches psql zurückgibt: /usr/local/bin/psql


Irgendwelche Lösungen zu diesem? Einige Lösungen schlagen vor, dass ich meinen $ PATH in meine vorherige Postgres-Installation ändern muss, da eine neue Version von Postgres mit Mavericks hinzugefügt würde. Wie finde ich wo sich das befindet? Es ist durchaus möglich, dass es mit Homebrew installiert wurde, aber ich bin mir nicht sicher.

21
Ryan King

wenn Sie es über Homebrew installiert haben, versuchen Sie es (aus brew info postgresql)

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Was wird es neu laden. Postgress.app Mein Standard findet Ihre Datenbanken nicht (Sie müssten auf das Verzeichnis PGDATA verweisen, und es könnte zu Versionskonflikten kommen (wenn Sie 9.2 und postgress.app als 9.3 verwenden, wäre ein Dump/Restore-Vorgang in Ordnung .

aus Kommentaren ziehen. 

ok so wie es aussieht, hast du 9.2.3 installiert, was ich tun würde ist dies. 

postgres -D /usr/local/var/postgres 

Dann unterstütze sie alle. pg_dumpall > ~/mydatabases.dump

töte postgres 

ein brew reinstall postgresql, aber eine Warnung bringt Sie von 9.2.3 zu 9.3.1. Importieren Sie anschließend alle Ihre Datenbanken psql < mydatabaes.dump erneut. Stellen Sie sicher, dass Sie die Anweisungen zum Entladen/Laden der Launchctl-Anweisungen befolgen, und an diesem Punkt sollten Sie gut sein. Sie können sich auch die Verwendung von postgress.app ansehen und Ihre Datenbanken in diese App importieren, aber Sie müssen Ihre Datenbank trotzdem sichern/dumpen. 

23
Doon

tl; dr Starten Sie einfach die Postgres-Anwendung!

FWIW, ich hatte nach meinem Mavericks-Upgrade und danach genau die gleiche Erfahrung:

  • Installieren und Starten von 9.3 (wurde in meinem Anwendungsordner als Postgres93 angezeigt)
  • 9.2 in den Papierkorb verschieben
  • Die Anzeige von Rails schlägt fehl, weil meine Datenbanken nicht migriert wurden

Ich ging dann zurück und:

  • Beenden Sie 9.3
  • Wiederhergestellte 9.2 aus dem Papierkorb
  • In Betrieb genommen 9.2

und alles hat gut funktioniert!

Das habe ich dann gemerkt

  • Das Problem war, dass Postgres nach der Installation meiner Mavericks nicht ausgeführt wurde
  • Ich hatte noch nie explizit etwas unternommen, um Postgres beim Start auszuführen, aber ...
  • Mac OS hat Postgres nach einem Neustart immer neu gestartet, da es zuvor ausgeführt wurde
6
Peter Alfvin

Hatte das gleiche Problem. Festgestellt, dass das Upgrade die Prozesse hart abgebrochen hat und die Postgres-PID-Datei da draußen gelassen hat. Seien Sie also kein Dummkopf wie ich und klicken Sie auf den Neustart, um ein Upgrade Ihres OSX durchzuführen. Stellen Sie sicher, dass Sie vor dem Upgrade alles ordnungsgemäß herunterfahren.

6
GregD

Die einfachste Lösung ist die Verwendung von http://postgresapp.com , die einfach funktioniert

Für die Installation über Homebrew müssen Sie unbedingt brew update ausführen, damit Homebrew wieder funktioniert

5
jewilmeer

Versuchen Sie, dies zu Ihrem .bash_profile hinzuzufügen. hier :

export PGHOST=localhost
4
Daniel Ristic

Dieses Problem ist mir kürzlich passiert, als ich auf 10.9.4 aufgerüstet habe 

Nach einem Tag voller Versuch und Irrtum habe ich diesen Beitrag von Joho gefunden, der meine Probleme behoben hat: https://Gist.github.com/joho/3735740

Stellen Sie sicher, dass Sie die Versionen an Ihre Installationsversionen anpassen. Wenn Sie mehrere Versionen wie ich installiert haben, können Sie sehen, welche Versionen Sie aufrufen, indem Sie auf cd/usr/local/Cellar/postgresql zugreifen.

In Summe:

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ mv /usr/local/var/postgres /usr/local/var/postgres9.2
$ brew update
$ brew upgrade postgresql
$ initdb /usr/local/var/postgres -E utf8
$ pg_upgrade -b /usr/local/Cellar/postgresql/9.2.1/bin -B /usr/local/Cellar/postgresql/9.3.4/bin -d /usr/local/var/postgres9.2 -D /usr/local/var/postgres
$ cp /usr/local/Cellar/postgresql/9.3.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Wenn Sie Ruby verwenden, auch:

$ gem pristine pg

Ich hoffe das hilft! Es hat für mich getan

2
Brent11

Wenn Sie über .dmg installieren, können Sie das Postgres-Installationsprogramm neu installieren (in meinem Fall postgresql-9.1.3-1-osx.dmg). Möglicherweise ist auch ein Neustart erforderlich. Ich habe das erst gestern gemacht - meine eigentlichen Datenbanken wurden nicht gelöscht und alles ist jetzt in Ordnung.

Ähnliches passierte von Snow Leopard bis Mountain Lion:

Mountain Lion Postgres konnte keine Verbindung herstellen

1
Neil Billingham

Nach der Installation von PostgreSQL mit homebrew für OS X Mavericks hat dies für mich funktioniert:

Sudo ARCHFLAGS="-Arch x86_64" gem install pg

Wenn dies nicht der Fall ist, hat dieser Befehl das Problem in meinem Fall behoben, nachdem er nach dem Upgrade des Betriebssystems auf OS X Yosemite und OS X El Capitan

Sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/[Version-Number]/bin gem install pg -v [gem version]

Stellen Sie außerdem sicher, dass Sie Xcode und command line tools für Xcode aktualisiert haben.

0
Lahiru

Wenn Sie ein Upgrade mit Homebrew durchgeführt haben, liegt das Problem wahrscheinlich im Datenbankformat. Überprüfen Sie es, indem Sie den Befehl postgres direkt ausführen:

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

Da es sich bei meinen Entwicklungsdatenbanken nur um Samendaten handelt, habe ich sie einfach umgehauen.

$ rm -rf /usr/local/var/postgres
$ initdb

Da dies alles zerstört, müssen Sie natürlich Ihre Rollen neu erstellen, bevor Rake db: create erfolgreich sein kann.

$ createuser -s MyApp

Wenn Sie den Rollennamen nicht kennen, führen Sie einfach rake db: create aus. Es wird dir sagen.

0
bronson

Falls Sie diese Seite nach dem Upgrade von Yosemite gefunden haben, ist ein anderer Ansatz erforderlich, um das Problem zu lösen. Beim Upgrade auf Yosemite werden im Wesentlichen einige Dateien zerstört. Sie finden das Problem und die Lösung hier !.

0
Obromios