Die relevante Option ist --locale=locale
zur initdb Befehl, der Ihren Datenbank-Cluster initialisiert. Wenn Sie es nicht explizit angeben, wird standardmäßig das Gebietsschema des Systems verwendet. (Sie führen Ihr Ubuntu wahrscheinlich auf Gebietsschema „C“ aus.)
Lesen Sie mehr darüber im ausgezeichneten Handbuch hier .
In PostgreSQL können Sie schleichen Sie sich immer noch in eine Datenbank mit einem anderen Gebietsschema ein, indem Sie eine neue Datenbank auf Basis von template0
erstellen anstelle des standardmäßigen templeate1
. Ich zitiere das Handbuch hier
:
Aber ich würde lieber den Datenbankcluster mit dem gewünschten Gebietsschema neu erstellen. Viel sauberer.
Bearbeiten:Info über verfügbare Gebietsschemas
Sie können nur verwenden Gebietsschemas, die vom Betriebssystem bereitgestellt werden. Ich zitiere das Handbuch hier :
Sehen Sie sich locale-gen
an in einem Unix-System, wenn Sie eine noch nicht generierte Locale verwenden möchten. Es ist wichtig zu verstehen, dass mehrere Gebietsschemas in Ihrem Betriebssystem installiert werden können, aber nur eines davon für Systemparameter wie LC_CTYPE
ausgewählt werden kann , LC_COLLATE
usw. Sehen Sie sich die Ausgabe von locale
an gegenüber locale -a
in der Schale. Normalerweise ist es für alle gleich, eingestellt über LC_ALL
.
@David:Was du getan hast, hat vielleicht dein Problem gelöst, aber das hättest du einfacher haben können. Beachten Sie auch, dass die Umgebungsvariable LANG
stellt nur den Standardwert bereit für alle Gebietsschemaeinstellungen. Wenn einer von ihnen auf etwas anderes eingestellt ist, LANG
wird überschrieben. Setzen Sie LC_ALL
vorhandene Einstellungen zu überschreiben. Hier ist eine vieler Websites
im Web, das Ihnen mehr darüber erzählt.
Um alle aktuellen Locale-Einstellungen Ihrer Datenbank (Cluster) zu überprüfen, führen Sie in Ihrer Datenbank aus:
SHOW ALL;
Oder genauer gesagt:
SELECT *
FROM pg_settings
WHERE name ~~ 'lc%';