Обсуждение: lc_collate mess

Поиск
Список
Период
Сортировка

lc_collate mess

От
Susanne & Udo Krause
Дата:

Hi there,


the new PostgreSQL has been created from scratch by standard installation with German_Switzerland, then it does not know:


C:\Users\postgres\Documents>pg_upgrade.exe --old-datadir "C:/Program Files/PostgreSQL/12/data" --new-datadir "C:/Program Files/PostgreSQL/13/data" --old-bindir "C:/Program Files/PostgreSQL/12/bin" --new-bindir "C:/Program Files/PostgreSQL/13/bin" --check
Führe Konsistenzprüfungen durch
-------------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* data types in user tables                 ok
Checking for contrib/isn with bigint-passing mismatch       ok

lc_collate-Werte für Datenbank »postgres« stimmen nicht überein: alt »German_Switzerland.1252«, neu »German_Germany.1252«
Fehlgeschlagen, Programm wird beendet

C:\Users\postgres\Documents>



where is a hint how to fix that? New PostgreSQL did not yet start up, of course.

Previous migration vom PostgreSQL 9 to PostgreSQL 12 was a messy nightmare, still not okay.


Thanks in advance

Udo.

Re: lc_collate mess

От
Heikki Linnakangas
Дата:
On 22/11/2020 15:31, Susanne & Udo Krause wrote:
> the new PostgreSQL has been created from scratch by standard 
> installation with German_Switzerland, then it does not know:
> 
> ------------------------------------------------------------------------
> 
> C:\Users\postgres\Documents>pg_upgrade.exe --old-datadir "C:/Program 
> Files/PostgreSQL/12/data" --new-datadir "C:/Program 
> Files/PostgreSQL/13/data" --old-bindir "C:/Program 
> Files/PostgreSQL/12/bin" --new-bindir "C:/Program 
> Files/PostgreSQL/13/bin" --check
> Führe Konsistenzprüfungen durch
> -------------------------------
> Checking cluster versions                                   ok
> Checking database user is the install user                  ok
> Checking database connection settings                       ok
> Checking for prepared transactions                          ok
> Checking for reg* data types in user tables                 ok
> Checking for contrib/isn with bigint-passing mismatch       ok
> 
> lc_collate-Werte für Datenbank »postgres« stimmen nicht überein: alt 
> »German_Switzerland.1252«, neu »German_Germany.1252«
> Fehlgeschlagen, Programm wird beendet
> 
> C:\Users\postgres\Documents>
> 
> ------------------------------------------------------------------------
> 
> 
> where is a hint how to fix that? New PostgreSQL did not yet start up, of 
> course.

The error message suggests that the old database was initialized with 
"German_Switzerland.1252" locale, and the new one with 
"German_Germany.1252". The new database needs to initialized with the 
same locale as the old one for pg_upgrade to work. Make sure you select 
""German_Switzerland.1252" in the PostgreSQL 13 installer.

Or you can re-initialize the datadir after installing PostgreSQL with 
something like:

initdb -D "C:/Program Files/PostgreSQL/13/data" 
--locale="German_Switzerland.1252"

- Heikki