Vraag Het upgraden van Postgres.app 9.1 tot 9.2, waardoor lc_collate waarden niet overeenkomen met fouten


Ik ben een Postgres.app aan het upgraden op mijn Macbook Pro (mijn ontwikkelmachine) en ik krijg een foutmelding als ik het volgende uitvoer:

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

De fout die ik krijg:

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

Hoe verbeter ik dit?

Notitie: ik had vroeger Postgres.app 9.1, maar ik heb het overschreven. De aanwijzingen die ik had moeten lezen / volgen is: Postgres.app upgraden. Dus de oude bin is weg, maar ik heb nog steeds de datadirectory. In plaats daarvan heb ik Postgres 9.1 gedownload en elders geïnstalleerd om de bin-directory te gebruiken om een ​​upgrade uit te voeren en mijn gegevens naar de nieuwe Postgres te verplaatsen.


5
2017-08-01 08:43


oorsprong




antwoorden:


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

Initialiseer de nieuwe PostgreSQL-cluster

Initialiseer de nieuwe cluster met behulp van initdb. Gebruik wederom compatibele initdb   vlaggen die overeenkomen met het oude cluster. Veel vooraf gebouwde installatieprogramma's doen dit   stap automatisch. Het is niet nodig om het nieuwe cluster te starten.

Wanneer u initdb uitvoert, zorg dan dat --lc-collate = locale hetzelfde is als de oude db, bijvoorbeeld "en_us"


3
2017-08-01 11:30



Ja, dit was min of meer wat ik deed. Dank je. - spong
De DB waarnaar ik migreer, is ingesteld op een landinstelling die blijkbaar niet op mijn systeem bestaat, dus het gebruik van de --locale-vlag met initdb is onmogelijk. Mis ik iets of werd dit over het hoofd gezien met initdb? - Amalgovinus


Omdat ik gegevens migreer en niets belangrijk vind in de database, heb ik gewoon alles verwijderd wat er was (je kunt natuurlijk een back-up maken om veilig te zijn):

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

en creëerde een nieuwe met locale en_US, met het volgende:

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

Daarna heb ik de upgrade uitgevoerd:

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

Voer vervolgens de analyser uit en alles was goed.

./analyze_new_cluster.sh

Ik verbond met pgAdmin3 en alle gegevens waren zoals het zou moeten zijn.


1
2017-08-01 11:31