Wie aktualisiere ich eine postgresl-Datenbank? Inkompatibilitätsfehler

26

Ich habe postgresql über Homebrew installiert.

Ich habe nach dem Upgrade das folgende Problem:

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

Irgendwelche Tipps zum Upgrade? Ich habe folgendes versucht:

$ pg_upgrade -d /usr/local/var/postgres/ -D /usr/local/var/postgres -b 
/usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin

Es hat nicht funktioniert. Hier ist die Ausgabe.

Performing Consistency Checks
Checking current, bin, and data directories                 ok
Checking cluster versions                                   
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting

Error.

Daniel Fischer
quelle

Antworten:

36

Für mich unter OS X mit Homebrew war das so.

  1. Installierte neue Postgres mit Homebrew (begann den Fehler zu bekommen)
  2. mv /usr/local/var/postgres /usr/local/var/postgres.old
  3. initdb -D /usr/local/var/postgres
  4. pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
  5. ./delete_old_cluster.sh (Dieses Skript wird automatisch im aktuellen Verzeichnis erstellt, wenn Sie die obigen Schritte ausführen.)
  6. rm delete_old_cluster.sh
Max Chernyak
quelle
Fantastisch und genau das, was ich brauchte Freund! Vielen Dank. Besonders nach einem Lion-Upgrade von Snow Leopard. Überprüfen Sie die server.log google Leute !!
pjammer
Das hat bei mir perfekt funktioniert, danke! Beachten Sie, dass Postgres muss nicht , bevor Sie diese Schritte ausgeführt werden, so dass , wenn Sie es über Homebrew installiert haben müssen Sie die Startmittel entladen , dass sie starten macht automatisch: launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Nachdem alle oben genannten Schritte abgeschlossen sind, laden Sie es einfach erneut:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson
6

So habe ich es auf Fedora gemacht:

  • Benennen Sie Ihr altes Datenverzeichnis in data.old um
  • Führen Sie postgresql-setup initdbdies aus, um ein neues Datenverzeichnis zu erstellen
  • dann renne pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

Ich denke für dich wäre das:

pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/bin/ -d /usr/local/var/postgres.old/ -D /usr/local/var/postgres/
  • Sie möchten auch pg_hba.conf und postgresql.conf aus data.old in das neue Datenverzeichnis kopieren.
  • Starten Sie postgresql neu
imel96
quelle
1

Ich habe die Zeile "initdb" verpasst / vergessen

initdb -D / usr / local / var / postgres

Nachdem die Datenbank erstellt wurde, funktionierte das pg_upgrade auf meinem Windows-System.

user321204
quelle
0

Für Arch Linux gibt es eine Lösung im Wiki , die für mich gut funktioniert hat:

pacman -S --needed postgresql-old-upgrade
su -
su - postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/data-9.2'
su - postgres -c 'mkdir /var/lib/postgres/data'
su - postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data'
su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/bin/ -B /usr/bin/ -d /var/lib/postgres/data-9.2 -D /var/lib/postgres/data'
Rudy Matela
quelle