5 votes

Mise à niveau de Postgres.app de 9.1 à 9.2, erreur de non correspondance des valeurs lc_collate

Je suis en train de mettre à niveau une application Postgres sur mon Macbook Pro (ma machine de développement) et je reçois une erreur lorsque j'exécute :

pg_upgrade -b /Users/foo/Library/PostgreSQL/9.1/bin/ 
           -B /Applications/Postgres.app/Contents/MacOS/bin/ 
           -d /Users/foo/Library/Application\ Support/Postgres/var-9.1/ 
           -D /Users/foo/Library/Application\ Support/Postgres/var

L'erreur que je reçois :

lc_collate cluster values do not match:  old "en_US", new "en_US.UTF-8"

Comment puis-je corriger cela ?

Note : Je avais l'habitude d'avoir Postgres.app en cours d'exécution en version 9.1, mais je l'ai écrasé. Les instructions que j'aurais dû lire / suivre sont : Mise à niveau de Postgres.app. Donc, le vieux binaire a disparu, mais j'ai toujours le répertoire des données. Au lieu de cela, j'ai téléchargé Postgres 9.1 et l'ai installé ailleurs pour utiliser le répertoire binaire pour mettre à niveau et déplacer mes données vers le nouveau Postgres.

3voto

user993553 Points 427

De http://www.postgresql.org/docs/9.0/static/pgupgrade.html

Initialisez le nouveau cluster PostgreSQL

Initialisez le nouveau cluster en utilisant initdb. Encore une fois, utilisez des indicateurs initdb compatibles avec ceux de l'ancien cluster. De nombreux installateurs pré-construits effectuent cette étape automatiquement. Il n'est pas nécessaire de démarrer le nouveau cluster.

Lorsque vous exécutez initdb, assurez-vous que --lc-collate=locale est le même que dans l'ancienne base de données, par exemple "en_us"

1voto

armannvg Points 275

Étant donné que je migre des données et que je ne me soucie pas de ce qui se trouve dans la base de données, j'ai simplement supprimé tout ce qui s'y trouvait (bien entendu, vous pouvez le sauvegarder pour plus de sécurité) :

rm -rf ~/Library/Application\ Support/Postgres/var

et en ai créé une nouvelle avec la locale en_US, comme suit :

initdb --locale=en_US -D ~/Library/Application\ Support/Postgres/var

Ensuite, j'ai simplement lancé la mise à niveau :

pg_upgrade -b ~/Library/PostgreSQL/9.1/bin/ 
           -B /Applications/Postgres.app/Contents/MacOS/bin/ 
           -d ~/Library/Application\ Support/Postgres/var-9.1/ 
           -D ~/Library/Application\ Support/Postgres/var

Ensuite, j'ai simplement exécuté l'analyseur et tout était bon :

./analyze_new_cluster.sh

J'ai ensuite connecté avec pgAdmin3 et toutes les données étaient comme elles devaient être.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X