pg_dump dbname > file
で plain text に吐いておいた dump ファイルを、バージョンアップした DB で
psql dbname < file
しても、どうしても一部 restore できないものが残った1。これを
pg_dump -Fc dbname > file
で custom format で dump し、
pg_restore -Fc -d dbname file
で restore したらうまくいった。単に pg_restore が psql よりうまく restore してくれるのかもと思ったけど、pg_restore は plain text の dump ファイルを食べてくれないので検証のしようがない。
ちなみに、中でエンコーディングの狂っているデータがあるのかと思ってみたら iconv は確かに不正なシーケンスを見つけてくれたが、それを除去しても結果は同じだった。
さらにちなみに、作成した database に psql で接続して psql 上で
\lo_import filename
……はしなかった。やってみろて? だってこれ使いにくいもんなぁ…。schema だけ restore してやればいいじゃんて? えー。
ほとんどはうまくいった。当たり前だけど permission とかの理由じゃないよ。 ↩
- initdbがpostgresという新しい標準データベースを作成するようになりました。このためユーティリティが標準データベースを検索する時にtemplate1ではなくpostgresを使用するように変更されました。(Dave)
マジすか。
思わず消しちまった。「あ、やべなんか変なデータベース作っちまった」と思ったよ。
消しちゃうとなんか普通の作業が結構できなくなります。
$ psql -U postgres template1
# create database -T template0 postgres;
とかしておくとよいと思う気がします。てかそうした。たぶん大丈夫。
なんか
Received-SPF: None
でも通ってる。そうか。docomo みたいに pass のみとかいう豪気な設定にはできんわけだ。ま、そりゃそうだよね。
じゃあやっぱホワイトリスト方式で締め出さないといかんな。
半年後に SPF が普及してたりするかもわからんけどね。
cf.