
pg_dumpでデータの引越し
こんにちは。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
両方ともエラーがでて、テーブルはできていても一部の中身が入りません。
行き詰まってしまっています。どうか宜しくお願いします。
また、現在設定されている文字コードを調べる方法や、お勧めの参考ホームページがございましたら教えてください。
投稿日時 - 2008-05-20 16:26:27
そのダンプがEUC-JPなんではないのかな。(ダンプを取ったときクライアントエンコーディングがEUC-JPになっていた)
で、入れなおそうとしているFC6のデフォルトエンコーディングは多分UTF-8なのだろうからダンプをUTF-8として(クライアントエンコーディングをUTF-8として)読もうとして失敗しているのではないでしょーか。
そのダンプを一旦nkfでUTF-8に直してしまうか、psqlのクライアントエンコーディングをEUC-JPに変更して入れてみたらどうでしょ。
現在のDB(PostgreSQL内の全DB)のエンコーディングを調べるにはpsqlで入って\lとすれば良い、が、サーバーエンコーディングはあまり関係はないと思うよ。クライアントエンコーディングを調べるには同じくpsqlで\encodingだ。
投稿日時 - 2008-05-20 20:58:17
ありがとうございます!
ご説明頂いた内容から解決できました。
エンコーディングがRed Hat Linux内のDBはSQL_ASCIIでFC6がUTF8となっており、その違いからダンプファイルがエラーになってしまっていました。
DBのエンコーディングをSQL_ASCIIにあわせたら問題なく入ってくれました。本当に助かりました。ありがとうございます。
投稿日時 - 2008-05-21 09:54:15
このQ&Aは役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています
回答(1)