原因の切り分けをしっかりしましょう
PostgreSQLの7.4.Xの環境でDBをSQL_ASCII、PHPでclient_encodingをSJISで利用していたらリストアができないらしい。
実行環境はRedHat8系でした。
$ pg_dump backup | psql restore
確かにうまくいかない。
$ pg_dump backup > backup.dump
dumpファイル見てみると、先頭部分で「SET client_encoding = ‘EUC-JP’;」エラー発生した部分みてみるとデータの欠落がありました。
pg_dumpって特にエラーとか吐かないんですね。
リストアできないっていってたけど、問題はダンプがしっかりできないことっぽい。
ということでpg_dumpでクライアントエンコーディングを指定してあげることに。
$ export PGCLIENTENCODING=SJIS
$ pg_dump backup > backup.dump
$ psql restore < backup.dump
おゃできましたよ?
マイナー(リビジョン)バージョンでの差は知らん。
カテゴリー: 日記