Comment mettre à niveau la base de données postgresl? Erreur d'incompatibilité


26

J'ai installé postgresql via Homebrew.

J'ai le problème suivant après la mise à niveau:

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.

Des conseils sur la mise à niveau? J'ai essayé ce qui suit:

$ 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

Ça n'a pas marché. Voici la sortie.

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

Erreur.

Réponses:


36

Pour moi sur OS X avec Homebrew, c'était comme ça.

  1. Nouveaux postgres installés avec Homebrew (a commencé à obtenir l'erreur)
  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 (ce script est créé automatiquement pour vous dans le répertoire courant lorsque vous passez par les étapes ci-dessus)
  6. rm delete_old_cluster.sh

Fantastique et juste ce dont j'avais besoin d'un ami! Merci. Surtout après une mise à niveau Lion provenant de Snow Leopard. Vérifiez les gens google server.log !!
pjammer

Cela a parfaitement fonctionné pour moi, merci! Notez que postgres ne doivent pas être en cours d' exécution avant de faire ces étapes, donc si vous l' avez installé par Homebrew assurez - vous de décharger l'agent de lancement qui fait démarrer automatiquement: launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Une fois toutes les étapes ci-dessus effectuées, chargez-le à nouveau:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Markus Amalthea Magnuson

6

Voici comment je l'ai fait sur fedora:

  • renommer votre ancien répertoire de données en quelque chose comme data.old
  • exécuter postgresql-setup initdbcela va créer un nouveau répertoire de données
  • puis exécutez pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

Je pense que pour vous ce serait:

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/
  • vous souhaitez également copier pg_hba.conf et postgresql.conf de data.old dans le nouveau répertoire de données.
  • redémarrer postgresql

1

J'ai manqué / oublié la ligne "initdb"

initdb -D / usr / local / var / postgres

Après la création de la base de données, le pg_upgrade a travaillé sur mon système Windows.


0

Pour Arch Linux , il existe une solution dans le wiki qui a bien fonctionné pour moi:

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'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.