PostgreSQL 10 initdb mit locale de-x-icu scheitert auf Windows Server 2012

Aufruf (Auszug):
initdb.exe … -E UTF8 --locale=de-x-icu --text-search-config=german …

Fehlermeldung:
initdb: ungültiger Locale-Name »de-x-icu«

Fehlersuche:
Laut PostgreSQL: Windows installers ist PostgreSQL 10 für Windows Server 2012 freigegeben. Mit der default-locale “German_Germany.1252” läuft initdb problemlos, diese darf aber nicht verwendet werden!
Auf allen neueren Betriebssystem gibt es kein Problem.
Ist das ein PostgreSQL Bug?
Ist ein Windows-Patch notwendig?

Mag, sein, was sagt das über die Verfügbarkeit eines Features? Postgres 10 ist bald 5 Jahre alt.

“…xy-icu” als Default Locale geht vielleicht nicht bei 10, auch nicht bei 11, vielleicht (auch nicht) bei 12. Ich weiß es nicht genau. Schau mal an der Ecke, welche PG Version Du dafür bräuchtest.

Das hat nichts mit Windows zu. Bis einschließlich Postgres 14 können ICU Collations nicht als default für initdb oder create database verwendet werden. Erst mit der kommenden (“Herbst 2022”) Version 15 wird das möglich sein.

Bis dahin bleibt Dir nichts anderes übrig, als die benötigte Collation pro Spalte explizit zu setzen.

Die Version 10 wird im Oktober 2022 dann “end-of-life” sein. Du solltest also auf jeden Fall jetzt schon mal das Upgrade einplanen.

Hallo castorp,

mit Windows Server 2016/2019/2022 und Windows 10/11 funktionieren die ICU-Parameter aber problemlos auch mit PostgreSQL Version 14.2 und 10.20!
Das Problem tritt nur in Verbindung mit Windows Server 2012 auf.

Ja, das gleiche Problem tritt auch mit createdb auf. Die Collation pro Spalte einzustellen ist ein guter Tipp, aber leider zu aufwändig.

Das PostgreSQL-Upgrade ist schon eingeplant, aber ich suche nach einer sofort verfügbaren Lösung.
Ich würde gerne das Problem verstehen und unseren Kunden nicht einfach ein Windows Upgrade aufzwingen, was vielleicht gar nicht die Lösung bringt!

Hallo pogomips,

ja die Feature-Tabelle gibt es unter PostgreSQL: Feature Matrix aber ohne Erwähnung von Betriebsystem-Abhängigkeiten. Laut obiger Tabelle sollte es kein Problem mit ICU und PostgreSQL 10 geben.