特定のデータベースをセットアップして実行するのに問題があります。私は誰かから得たpostgreSQLのダンプを復元しようとしています。私は役に立たないいくつかの方法を試しました。PostgreSQL用Linuxでのロケールの設定
ストレートpg_restoreのpg_restore -C -d postgres --exit-on-error maggie_prod_20111221.dump.sql
からデータベースや表領域の作成
最初
createdb -T template0 maggieprod -E LATIN1
SQL:
CREATE TABLESPACE magdat OWNER maggie LOCATION '/somewhere/magdat';
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2308; 1262 16386 DATABASE maggieprod postgres
pg_restore: [archiver (db)] could not execute query: ERROR: encoding LATIN1 does not match locale en_CA.utf8
DETAIL: The chosen LC_CTYPE setting requires encoding UTF8. Command was: CREATE DATABASE maggieprod WITH TEMPLATE = template0 ENCODING = 'LATIN1' TABLESPACE = magdat;
アン:私は次の取得最初の方法を使用して
私が試してみて、私が手にデータベースを作成するときにD、秒を使用して:
createdb: database creation failed: ERROR: encoding LATIN1 does not match locale en_CA.utf8
DETAIL: The chosen LC_CTYPE setting requires encoding UTF8.
だから、私はLATIN1エンコードのデータベースを作成することができないということのようですか?何故ですか?私はロケールとエンコーディングが初めてで、それらについてはほとんど知らない。私はちょうどダンプがLATIN1データベースから作られたことを知っています。
LANG=en_CA.utf8 LC_CTYPE="en_CA.utf8" LC_NUMERIC="en_CA.utf8" LC_TIME="en_CA.utf8" LC_COLLATE="en_CA.utf8" LC_MONETARY="en_CA.utf8" LC_MESSAGES="en_CA.utf8" LC_PAPER="en_CA.utf8" LC_NAME="en_CA.utf8" LC_ADDRESS="en_CA.utf8" LC_TELEPHONE="en_CA.utf8" LC_MEASUREMENT="en_CA.utf8" LC_IDENTIFICATION="en_CA.utf8" LC_ALL=
そしてlocale -a
の出力は次のとおりです:
locale
の出力がある
C en_AG en_AG.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IE.utf8 en_IN en_IN.utf8 en_NG en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZW.utf8 POSIX
私は私がすべき、2番目のコマンドではLATIN1が表示されませんか?もしそうなら、私はそれをどのように追加するつもりですか?コンピュータのロケールを変更する必要があると仮定するのは正しいですか?もしそうなら、postgreSQLのためだけにそれを行う方法はありますか?また、ダンプを試してみると、たくさんのガベージ文字が表示されます。これはエンコードされていると仮定していますが、どうすれば適切に見えますか?
ありがとうございました。あなたはすべてのロケールがインストールされていないので、あなたはエンコーディングに一致するロケールを使用してデータベースを作成する必要が