OK, von meinem perusings, es scheint, dass diese anfängliche
initdb --locale=xxx
--locale=locale
Specifies the locale to be used in this database. This is equivalent to specifying both --lc-collate and --lc-ctype.
im Grunde gibt die "default" locale für alle Datenbank, die Sie danach erstellen Einstellung (d Sie gibt die Einstellungen für template1 an, die Standardvorlage. Sie können wie folgt mit einem anderen Gebietsschema neue Datenbanken erstellen:
Locale als Codierung unterschiedlich ist, können Sie manuell specify es und/oder Codierung:
CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;
Wenn Sie es manuell rufen.
Grundsätzlich, wenn Sie es nicht angeben, verwendet es den Systemstandard, der fast nie "C" ist.
Wenn also Ihre show LC_COLLATE
etwas anderes als "C" oder "POSIX" zurückgibt, dann verwenden Sie nicht die standard C locale
und Sie müssen die xxx_pattern_ops für Ihre Indizes angeben. Beachten Sie auch die caveat, wenn Sie die <, < =,>, oder> = Operatoren verwenden möchten, müssen Sie einen zweiten Index ohne das Flag xxx_pattern_ops erstellen (es sei denn, Sie verwenden das Standard-C-Gebietsschema in Ihrer Datenbank, das ist selten. ..). Für nur == und LIKE
(etc.) brauchen Sie dann keinen zweiten Index. Wenn Sie LIKE
nicht benötigen, brauchen Sie möglicherweise auch den Index mit xxx_pattern_ops nicht.
Auch wenn Ihre Indizes definiert werden mit dem „Standard“ wie
CREATE INDEX my_index_name
ON table_name
USING btree
(identifier COLLATE pg_catalog."default");
Dies ist nicht genug zu sammeln, es sei denn, der Standard der „C“ (oder POSIX, die gleiche Sache) ist Sortierungs, es kann‘ t für Muster wie LIKE 'ABC%'
verwendet werden. Sie brauchen etwas wie folgt aus:
CREATE INDEX my_index_name
ON table_name
USING btree
(identifier COLLATE pg_catalog."default" varchar_pattern_ops);
Also, wenn ich die Show Dokumentation richtig bin zu verstehen, dann ist mein Servers LC_COLLATE Wert von „en_US.UTF-8“ bedeutet, dass es nicht die locale „C“ ist unter Verwendung, wobei in diesem Fall Ich muss sicherstellen, dass xxx_pattern_ops verwendet wird. Ist das richtig? –
Sie müssen solche Indizes nur erstellen, wenn die Kriterien zutreffen (Mustervergleich über die Spalten). Sieh dir meine Änderungen an. –
LC_COLLATE: [Derzeit kann dieser Parameter angezeigt, aber nicht gesetzt werden, da die Einstellung zum Zeitpunkt der Datenbankerstellung festgelegt wird.] (Http://www.postgresql.org/docs/9.2/static/sql-show.html) –