3

postgresで異なるエンコーディングのデータベースを作成しようとしましたが(データベースマネージャーとしてPgAdminを使用しています)、UTF8以外のエンコーディングでデータベースを作成しようとすると、PgAdminはデータベースを作成できないというエラーを表示します。現在のロケール「Portuguese_Brazil_1252」と一致せず、LC_Ctype構成で「WIN1252」をエンコードする必要があります。

PostGresでそれを設定するにはどうすればよいですか?私はWindowsXPを搭載したロケールテストサーバーで実行しています(私の選択ではありません)。異なるエンコーディングでデータベースを作成することは可能ですか、それともその動作はPostGresの制限ですか?ここの誰かがすでにそれを管理することに成功しましたか?

ありがとう

4

1 に答える 1

8

ドキュメントから:

新しいデータベースに指定された文字セットエンコーディングは、選択したロケール設定(LC_COLLATEおよびLC_CTYPE)と互換性がある必要があります。ロケールがC(または同等のPOSIX)の場合、すべてのエンコードが許可されますが、他のロケール設定の場合、正しく機能するエンコードは1つだけです。[...]

エンコーディングとロケールの設定は、template0がテンプレートとして使用される場合を除いて、テンプレートデータベースの設定と一致する必要があります。

次のいずれか(または両方)でデータベースを作成するために使用できるはずです。

  • テンプレートとして指定するtemplate0(デフォルトのtemplate1の代わりに)

  • 正しいLC_COLLATEを指定する(LC_COLLATE ='C'を使用してみてください)

  • 正しいLC_CTYPE=を指定する(LC_CTYPE ='C'も使用してみてください)

これらの設定をCREATEステートメントに追加する必要があります(PgAdminではメインフォームウィンドウから追加できます)

template0 / template1について知らず、知りたい場合は、こちらをお読みください

于 2011-05-10T21:37:07.833 に答える