私はこれらの照合を持っています:
postgres =#select * from pg_collation; collname | collnamespace | collowner | collencoding | collcollate | collctype ------------ + --------------- + ----------- + --- ----------- + ------------- + ----------- デフォルト| 11 | 10 | -1 | | C | 11 | 10 | -1 | C | C POSIX | 11 | 10 | -1 | POSIX | POSIX en_US | 11 | 10 | 6 | en_US.utf8 | en_US.utf8 en_US.utf8 | 11 | 10 | 6 | en_US.utf8 | en_US.utf8 ucs_basic | 11 | 10 | 6 | C | C (6行)
システムに新しいロケールをインストールしましたが、postgresで使用したいと思います。新しい照合をインストールする唯一の方法はinitdb
コマンドを使用することですが、pg_dumpall
を作成し、postgresデータディレクトリを削除し、initdb
を実行してすべてを復元する必要がありますダンプからのデータ。より簡単な解決策はありませんか?
新しいDBクラスターを作成する必要はありません。 Postgres 9.1以降では CREATE COLLATION
を使用できます。マニュアルの例:
オペレーティングシステムロケールfr_FR.utf8から照合順序を作成するには(現在のデータベースエンコーディングがUTF8であると想定):
CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
詳細については、マニュアルの 照合順序の管理 の章を必ずお読みください。特に:
特定のデータベース内では、そのデータベースのエンコーディングを使用する照合のみが対象です。
pg_collation
の他のエントリは無視されます。
つまり、照合順序は、使用できるようにデータベースエンコーディングと一致する必要があります。
しかし、まだまだあります。それを読んで。