Обсуждение: Upgrading from postgresql 11 to postgresql 17 using pg_upgrade

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

Upgrading from postgresql 11 to postgresql 17 using pg_upgrade

От
Muhammet Kurtoğlu
Дата:
Hi
 during upgrade we encounter 

pg_restore: error: could not execute query: ERROR: encoding "UTF8" does not match locale "tr_TR.iso88599" DETAIL: The chosen LC_CTYPE setting requires encoding "LATIN5". Command was: CREATE DATABASE "zzz" WITH TEMPLATE = template0 OID = 84322 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'tr_TR.iso88599' TABLESPACE = "zz";

postgresql 11 database list


image.png

please help


--
Вложения

Re: Upgrading from postgresql 11 to postgresql 17 using pg_upgrade

От
Ron Johnson
Дата:
On Thu, Sep 18, 2025 at 8:12 AM Muhammet Kurtoğlu <muhammet.kurtoglu@bisoft.com.tr> wrote:
Hi
 during upgrade we encounter 

pg_restore: error: could not execute query: ERROR: encoding "UTF8" does not match locale "tr_TR.iso88599" DETAIL: The chosen LC_CTYPE setting requires encoding "LATIN5". Command was: CREATE DATABASE "zzz" WITH TEMPLATE = template0 OID = 84322 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'tr_TR.iso88599' TABLESPACE = "zz";

postgresql 11 database list


image.png

please help


What PG17 version?
What exact pg_upgrade command (with options, and all output) did you run?

--
Death to <Redacted>, and butter sauce.
Don't boil me, I'm still alive.
<Redacted> lobster!
Вложения

Re: Upgrading from postgresql 11 to postgresql 17 using pg_upgrade

От
Holger Jakobs
Дата:
Am 18.09.25 um 14:11 schrieb Muhammet Kurtoğlu:
Hi
 during upgrade we encounter 

pg_restore: error: could not execute query: ERROR: encoding "UTF8" does not match locale "tr_TR.iso88599" DETAIL: The chosen LC_CTYPE setting requires encoding "LATIN5". Command was: CREATE DATABASE "zzz" WITH TEMPLATE = template0 OID = 84322 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'tr_TR.iso88599' TABLESPACE = "zz";

postgresql 11 database list


image.png

please help


--

Hi Muhammet,

You aren't using pg_upgrade as you are saying in the subject line, but pg_restore for restoring, which means you did a pg_dump -Fc before.

In order to avoid the errors you have encountered, the safest bet ist ALWAYS to use UTF8. Use UTF8 as encoding for ALL databases, and Collate and CType language_country.UTF-8, in your case tr_TR.UTF-8. Don't bother with the outdated iso8859x character sets.

UTF8 can handle all characters from all languages, special characters, emojis and so on. 

Make sure that the database cluster also has been initialised with the correct encoding. Check whether the encoding of template1 database is the same. Otherwise, run the initdb command again with correct settings, see manpage of initdb.

This command works nonetheless

create database kurt with encoding = utf8 locale = tr_TR lc_collate = 'tr_TR.UTF-8' lc_ctype = 'tr_TR.UTF-8' locale_provider = libc template = template0;

Selamlar

Holger

--

Holger Jakobs, Bergisch Gladbach, Germany

Вложения

Re: Upgrading from postgresql 11 to postgresql 17 using pg_upgrade

От
concur dev
Дата:

hi Muhammet!
The locale tr_TR.iso88599 only works with LATIN5, not UTF-8. Either create the DB with tr_TR.UTF-8 and restore without --create, or switch to LATIN5. Locale and encoding must match.

Regards
Ashish

On Thu, Sep 18, 2025 at 2:12 PM Muhammet Kurtoğlu <muhammet.kurtoglu@bisoft.com.tr> wrote:
Hi
 during upgrade we encounter 

pg_restore: error: could not execute query: ERROR: encoding "UTF8" does not match locale "tr_TR.iso88599" DETAIL: The chosen LC_CTYPE setting requires encoding "LATIN5". Command was: CREATE DATABASE "zzz" WITH TEMPLATE = template0 OID = 84322 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'tr_TR.iso88599' TABLESPACE = "zz";

postgresql 11 database list


image.png

please help


--
Вложения