Come posso aggiornare il database postgresl? Errore di incompatibilità


26

Ho installato postgresql tramite Homebrew.

Ho il seguente problema dopo l'aggiornamento:

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.

Qualche consiglio su come aggiornare? Ho provato quanto segue:

$ 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

Non ha funzionato Ecco l'output.

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

errore.

Risposte:


36

Per me su OS X con Homebrew è stato così.

  1. Nuovi postgres installati con Homebrew (ha iniziato a ricevere l'errore)
  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 (questo script viene creato automaticamente per te nella directory corrente quando passi attraverso i passaggi precedenti)
  6. rm delete_old_cluster.sh

Fantastico e proprio quello di cui avevo bisogno amico! Grazie. Espeicamente dopo un upgrade Lion proveniente da Snow Leopard. Controlla il server.log google people !!
Pjammer

Questo ha funzionato perfettamente per me, grazie! Si noti che postgres non devono essere in esecuzione prima di fare questi passaggi, quindi se si è installato attraverso Homebrew assicuratevi di scaricare l'agente di lancio che lo rende avvia automaticamente: launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Dopo aver completato tutti i passaggi precedenti, basta caricarlo di nuovo:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson,

6

Ecco come l'ho fatto su fedora:

  • rinominare la vecchia directory di dati in qualcosa come data.old
  • eseguire postgresql-setup initdbquesto creerà una nuova directory di dati
  • quindi corri pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

Penso che per te sarebbe:

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/
  • si desidera anche copiare pg_hba.conf e postgresql.conf da data.old nella nuova directory di dati.
  • riavvia postgresql

1

Ho perso / dimenticato la riga "initdb"

initdb -D / usr / local / var / postgres

Dopo la creazione del DB, pg_upgrade ha funzionato sul mio sistema Windows.


0

Per Arch Linux , c'è una soluzione nel wiki che ha funzionato bene per me:

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'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.