dポイントプレゼントキャンペーン実施中!

こんにちは。postgreSQL初心者です。
古いサーバからpostgreSQLのデータを pg_dumpもしくは、pg_dumpallで取り出し、新しいサーバに入れようとしてるのですが、以下のようなエラーが出てデータが入ってくれません。
ERROR: invalid byte sequence for encoding "UTF8": 0x8a
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

文字コードの問題だと思うのですが、バージョンの違いや基本的な設定も関係あるのでしょうか?
環境
旧サーバ:Red hat Linux 9, postgreSQL 8.0
移転先サーバ:Fedora Core 6, postgreSQL 8.1

実行コマンド
ダンプ
pg_dump -d DB_NAME > FILE_NAME
※ファイルの中身はちゃんと出力されています。

リストア(?というのでしょうか?)
方法1: \i FILE_NAME > DB_NAME
方法2:cat FILE_NAME  | psql DB_NAME
両方ともエラーがでて、テーブルはできていても一部の中身が入りません。
行き詰まってしまっています。どうか宜しくお願いします。

また、現在設定されている文字コードを調べる方法や、お勧めの参考ホームページがございましたら教えてください。

A 回答 (1件)

 そのダンプがEUC-JPなんではないのかな。

(ダンプを取ったときクライアントエンコーディングがEUC-JPになっていた)
 で、入れなおそうとしているFC6のデフォルトエンコーディングは多分UTF-8なのだろうからダンプをUTF-8として(クライアントエンコーディングをUTF-8として)読もうとして失敗しているのではないでしょーか。
 そのダンプを一旦nkfでUTF-8に直してしまうか、psqlのクライアントエンコーディングをEUC-JPに変更して入れてみたらどうでしょ。
 現在のDB(PostgreSQL内の全DB)のエンコーディングを調べるにはpsqlで入って\lとすれば良い、が、サーバーエンコーディングはあまり関係はないと思うよ。クライアントエンコーディングを調べるには同じくpsqlで\encodingだ。
    • good
    • 0
この回答へのお礼

ありがとうございます!
ご説明頂いた内容から解決できました。

エンコーディングがRed Hat Linux内のDBはSQL_ASCIIでFC6がUTF8となっており、その違いからダンプファイルがエラーになってしまっていました。

DBのエンコーディングをSQL_ASCIIにあわせたら問題なく入ってくれました。本当に助かりました。ありがとうございます。

お礼日時:2008/05/21 09:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す