※ ChatGPTを利用し、要約された質問です(原文:データベースの移転がうまくできません)
データベース移転できない問題について
このQ&Aのポイント
データベースの移転で問題が発生しています。PostgresSQLに詳しい方、ご教示ください。
ネットショッピングサイトのサーバ管理をしており、データベースの移転がうまく行かず困っています。
移転元のサーバでpg_dumpコマンドを実行し、ダンプファイルを自分のWindows7のマシンに保存しましたが、文字化けが発生しています。どうすれば正しくデータを移転できるのでしょうか?
PostgresSQLに詳しい方、教えてください。
現在、私はネットショッピングサイトのサーバ管理をしており、データベースにPostgresSQLを使ってます。
サーバのハードが老朽化してきたため、今までの自社サーバーをやめ、レンタルサーバをかりてそこへサイト移転することになりました。
PHPやHTMLといったソース類は、容易に移転できたのですが、データベースの移転がうまく行かず困っております。
どなたかご教示ください。
■環境(移転元)
サーバ:自社サーバ
OS:Linux version 2.4.20-16.9
Postgresバージョン:psql (PostgreSQL) 7.3.4
■環境(移転先)
レンタルサーバ会社:さくらインターネット
サービス名:さくらのVPS(v3) 1G
OS:Linux version 2.6.32-279.1.1.el6.x86_64
Postgresバージョン:psql (PostgreSQL) 8.4.13
■現象
移転元のサーバにて、pg_dump -i コマンドを実施。
生成されたダンプファイルをFFFTPにて自分のWindows7のマシンに保存。
Windows7上のエディター(DreamWeaver)でファイルを開くと文字化けしています。
エディターのエンコードをシフトJIS→EUCに変更するとデータベースに入力されている文字列をきちんと見ることができます(一部文字化けは残るのですが。)ので、ここまでは成功しているように思っています。
このダンプファイルをFileZillaにて移転先のサーバにアップロード。
psqlコマンドでリストア。
あらかじめ、移転先のPostgresには移転元のデータベース名と同じものを作成し、ユーザー名も同じものを作成してあります。
ところが、いざselectコマンドを使いデータを検索してもあるはずのデータが出てきません。
テーブルはきちんと作成されているようなのですが。
どうしたらデータをきちんと移転できるのでしょうか?
どなたか、ご教示頂けないでしょうか。
補足
ありがとうございます! ヒントになりました。 移転元のデータベースをダンプする前に export PGCLIENTENCODING=EUC-JP を行い、ダンプを行ったものを一度Windows7に持ってきて、サクラエディタで開いてみたら、キレイに表示されていました。 それを移設先のサーバに持って行き、移転先でも export PGCLIENTENCODING=EUC-JP を行ってから、psqlコマンドでリストアしました。 このときに表示されるエラーを精査してみたところ、 ERROR: 符号化方式"EUC_JP"文字0xfce2<は"UTF8"と同じではありません CONTEXT: user_infoのCOPY。行番号 412 のようなエラー文が多数出ているのに気づき、Windows7に戻ってサクラエディターで一箇所ずつ修正し、psqlコマンドでリストアしましたところ、きちんと表示されました! 文字コードと禁止文字が混入していたことが原因のようです。 移設元のデータベースにどうやってこの文字が混入したのかは謎ですが移設はうまくいきました。 ありがとうございます。感謝します。