2013-07-23 9 views
58

Nach dem Neustart meines MacBook Pro Ich bin nicht in der Lage den Datenbankserver zu starten:Postgres - FATAL: Datenbank-Dateien sind nicht kompatibel mit Server

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 die Protokolle überprüft und die folgende Zeile erscheint immer und immer wieder:

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.0.4. 

9.0.4 war die Version, die auf dem Mac vorinstalliert war, 9.2 [.4] ist die Version, die ich über Homebrew installiert habe. Wie bereits erwähnt, funktionierte das vor dem Neustart, so dass es sich nicht um ein Kompilierungsproblem handeln kann. Ich habe auch initdb /usr/local/var/postgres -E utf8 erneut ausgeführt und die Datei existiert noch.

Leider bin ich ziemlich neu in Postgres, so würde jede Hilfe sehr geschätzt werden.

+1

Wie starten Sie Postgres? Bist du sicher, dass dein Startscript auf die neue Version verweist? Da ich aufgrund der Fehlermeldungen glaube, dass beide Versionen jetzt nebeneinander installiert sind. – fvu

+0

'pg_ctl -D/usr/local/var/postgres -l /usr/local/var/postgres/server.log start '- und die Antwort ist' server starting' – klaffenboeck

+1

Wenn Sie nach Dateien mit dem Namen 'pg_ctl' suchen I' Ich bin mir ziemlich sicher, dass du 2 Kopien finden wirst. Und diejenige, die 'pg_ctl' entspricht, wird die alte Version sein, und die andere wird die neue Version sein. – fvu

Antwort

33

Try this: https://gist.github.com/joho/3735740

Es perfekt für mich gearbeitet. Am Ende erzeugt es auch 2 Bash-Skripte, um Ihre DB zu überprüfen und den alten Cluster zu entfernen. Wirklich genial.

siehe: http://www.postgresql.org/docs/9.2/static/pgupgrade.html mehr zu verstehen.

+2

Arbeitete perfekt für mich mit der Migration von 9.4 bis 9.5 .. – tftdias

+0

Auch für mich mit der Migration von 9.3.4 zu 9.5.2. –

+1

Hier sind die Schritte für die Aktualisierung 9.5.5 zu 9.6.1 mit Homebrew (macOS): https://gist.github.com/giannisp/b53a76047b07751ed3ade3c1db1d2c51 – Giannis

111

Wenn Sie die nukleare Option suchen (alle Daten löschen und eine neue Datenbank erhalten), können Sie tun:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

und dann werden Sie brauchen, um rake db:setup und rake db:migrate von Ihrer Rails-Anwendung um wieder eingerichtet zu werden.

+3

Wenn das oben genannte immer noch nicht funktioniert (was für mich der Fall war), versuchen Sie, initdb einen neuen Datenverzeichnisnamen zu geben, z./usr/local/var/postgres95. – mpelzsherman

+0

BTW, unmittelbar danach müssen Sie wahrscheinlich createuser -s your_rails_app ausführen, um den Postgres-Benutzer von Rails zu erstellen. Siehe https://stackoverflow.com/questions/11919391/postgresql-error-fatal-role-username-does-not-exist/25263322 – Meekohi

4

Gefunden im Internet, diese Lösung funktioniert gut für mich.

Als ich versuchte, PostgreSQL-Server nach dem Upgrade auf OS X 10.10 Yosemite zu starten, stieß ich mit einem nächsten Problem:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

konnte keine Verbindung zum Server: Keine solche Datei oder das Verzeichnis Ist der Server lokal ausgeführt wird und akzeptieren Verbindungen auf Unix-Domain-Socket "/var/pgsql_socket/.s.PGSQL.5432"? Okay, können Sie einen Blick in Server-Logs nehmen:

cat /usr/local/var/postgres/server.log 

FATAL: Datenbank-Dateien sind nicht kompatibel mit Server DETAIL: Das Datenverzeichnis von PostgreSQL Version 9.2 initialisiert wurde, die mit dieser Version 9.3.5 nicht kompatibel ist. So , müssen wir ein paar Schritte nach dem Upgrade postgresql folgen:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 

mv /usr/local/var/postgres /usr/local/var/postgres92 

brew update 

brew upgrade postgresql 

initdb /usr/local/var/postgres -E utf8 

pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d /usr/local/var/postgres92 -D /usr/local/var/postgres 

cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/ 

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 

rm -rf /usr/local/var/postgres92 

Das ist es.

+1

Ich habe die obigen Schritte verwendet, um von 9.53 auf 10.0 zu aktualisieren. Der Befehl pg_upgrade wurde ein wenig aktualisiert. Der neue Befehl lautet pg_upgrade -b /usr/local/Cellar/postgresql/9.5.3/bin/ -B /usr/local/Cellar/postgresql/10.0/bin -d/usr/local/var/postgres95 -D/usr/local/var/postgres – techvineet

Verwandte Themen