web-dev-qa-db-ja.com

エンコーディングが異なるPostgreSQLデータベースを作成する方法

ドイツ語でデータを保存する新しいデータベース(つまり、アクセント付きのテキストなど)を作成します。したがって、次のSQLを使用して作成しようとしました。

CREATE DATABASE testdb
  WITH ENCODING='LATIN1'
       OWNER=postgres
       TEMPLATE=template0
       CONNECTION LIMIT=-1;

これをWindows開発マシンで実行すると、次のエラーメッセージが表示されます。

エラー:「LATIN1」のエンコーディングはロケール「English_United States.1252」と一致しません詳細:選択したLC_CTYPE設定にはエンコーディング「WIN1252」が必要です。

Linuxサーバーで、次のエラーメッセージが表示されます。

エラー:「LATIN1」のエンコーディングはロケール「en_US.UTF-8」と一致しません詳細:選択したLC_CTYPE設定にはエンコーディング「UTF8」が必要です。

ドイツ語のテキストを正しく保存できるデータベースを作成するにはどうすればよいですか?

2

Linuxでは、最初にLATIN1initdb\usr\pgsql-10\binとして使用してデータベースを初期化することで、initdb --encoding=en_US.iso88591をエンコードしたデータベースを作成できました。 ローカライゼーション および利用可能な 文字セット サポートの詳細をお読みください。

次に、-を使用してサービスを再起動します

systemctl restart postgresql-10

これにより、テンプレートデータベースtemplate0とtemplate1が新しいエンコーディングで再初期化され、次のコマンドを使用してデータベースを作成できます。

createdb <dbname>

お役に立てれば。

1
Ankit Jain