Was schief läuft mit postgresql initdb? Warum ist das "UTF-8" - Kodierung nicht immer durchgesetzt?
Ich bin mit PostgreSQL 9.1. Versucht zu erzwingen, UTF8-Kodierung als Standard.
Dies ist, was ich Tue.
service postgresql initdb -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype=locale='en_US.UTF-8';
Obwohl die initilization Prozess geht ohne problem,
einen \l
am psql
prompt gibt es details.
List of databases
Name | Owner |Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | postgres | LATIN1 | en_US | en_US|
Warum ist die UTF-8
Codierung nicht immer durchgesetzt?
InformationsquelleAutor ThinkingMonkey | 2012-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie Sie nennen initdb durch ein runlevel-Skript des OS. Dieses Skript möglicherweise nicht pass auf die Parameter. Sie besser versuchen, Ausführung von initdb direkt, müssen Sie die folgenden Schritte ausführen, starten Sie als root und in der Annahme des OS-Benutzer-Konto für die Datenbank postgres.
initdb
direkt als superuser. gab eininitdb: cannot be run as root Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.
Fehler. Nach der Anmeldung als Benutzer konnte ich die Initialisierung der db mit der richtigen Codierung.Vergaß, dass es ein bisschen wählerisch, aktualisiert die Antwort mit dem vollen Satz von Befehlen, die benötigt werden könnten.
Hallo Jungs! Haben Sie eine Idee, warum bekomme ich: initdb: invalid locale "'en_US'.UTF-8'" ? Ich habe auch versucht ohne die Anführungszeichen, aber dann bekomme ich die initdb: invalid locale "de_de.UTF-8". Heruntergeladen habe ich das Postgresql9.4.1 binaries (nicht den installer) für Windows. Ist das Gebietsschema "en_US".UTF-8, nicht in der Windows-binaries?
Versuchen Sie 'en-US' msdn.microsoft.com/en-us/library/cdax410z.aspx
Danke @Eelke, en-US funktioniert... und absolut nichts anderes.
InformationsquelleAutor Eelke
Debian PostgreSQL installation automatisch die initdb d.h. er initialisiert die cluster mit Standard-Kodierung und Ländereinstellung. Die Codierung kann später geändert werden, aber der locale nicht. Zum ändern des Gebietsschemas (evtl. auch andere Optionen in initdb), löschen Sie die vorhandenen Standard-cluster und eine neue zu erstellen:
Achtung!
Den vorhergehenden Vorgang offensichtlich löscht alles, was Sie hatte in cluster-Datenbanken. Diesen Vorgang durchzuführen, direkt nachdem Sie installiert haben, das Basis-Paket. Überprüfen Sie die PostgreSQL-Handbuch, wenn Sie müssen, ändern Sie das Gebietsschema für eine vorhandene Datenbank (es ist nicht eine triviale operation).
InformationsquelleAutor jaydip