PostgreSQL 8.4でUnicodeデータベースを作成するにはどうすればよいですか?


14

デフォルトオプションでpostgresql-8.4パッケージをインストールしました。すべて正常に機能しましたが、Unicodeデータベースを作成することはできません。

-- This doesn't work
createdb test1 --encoding UNICODE

-- This works
createdb test2

エラーメッセージ、

createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) 

(afaik)新しいdbの作成にテンプレートを使用していないため、または何らかの理由で暗黙的にデフォルトの「postgres」データベースを参照しているため、少し困惑していますか?

または、.confファイルの設定がありませんか?

回答:


13

それが参照しているテンプレートはですtemplate1。これは、別のテンプレートを指定しない場合に暗黙的に使用されます。

最も迅速な回避策は、template0代わりにを使用してデータベースを作成することですcreatedb --template=template0

より適切なロケールでクラスター全体を削除して再初期化することをお勧めします。おそらく、デフォルトでCロケールを使用するようにオペレーティングシステムを設定しているでしょう。次の手順でデータベースシステムを再初期化できます。

sudo pg_dropcluster --stop 8.4 main
sudo pg_createcluster --locale=en_US.utf8 --start 8.4 main

もちろん、好きなロケールを使用してください。


クラスターをドロップしてロケールを変更することは、まさに私が探していたものでした、ありがとう:)
wildpeaks

男は、たくさん掘った後、それも探していました!PGをUbuntuロケールで動作させ、それを変更することさえできませんでした。しかし、UTF8を使用してクラスターを再作成すると、トリックが行われました:)。乾杯!
ルカサルダ

使用することもできます--locale=C.UTF-8(システムでサポートされているロケールをでリストしてくださいlocale -a)。
トリカス

3

多分、クラスターを作成する前にロケールを設定する必要があります

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

私はそれがうまくいったと思う!
アルフォンス

dpkg-reconfigureにはsudoが必要です...
Cerin

-1

私はあなたが意味すると思う:

createdb test42 --encoding utf-8

それはあなたが望むことをする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.