苦労したぞ、PostgreSQL on Windows XP Home Edition

かなり苦労した。
やりたかったのはローカルの開発用マシンで動かしているDBの内容を、本番サーバの物と同期を取るだけ。サーバのバックアップがあるからそれをローカルにレストアして終わりの予定だった。
が、ことは単純ではなかった。
単純にpgAdminIIIで実行したところ、テーブル空間が存在しないからとエラーになった。ローカルではデフォルト空間で今まで動かしてきたがサーバではきちんと定義している。最初に環境構築したときには問題にならなかったがバックアップの形式変わったかな?
とりあえず、そのままpgAdminIIIでテーブル空間の作成をしようとしたがエラーになった。エラーメッセージを使い、さらにWindowsと縛ってグーグル先生に聞いても回答がない。2chで同じ質問があったがフォルダのアクセス権をpostgresだけにしてみたら、という漠然とした回答だけ。
とりあえず、他に手がないからそれを試すが、Windows XP Home EditionにはエクスプローラのプロパティにセキュリティタブがないのでGUIで設定できない。
http://homepage2.nifty.com/winfaq/c/ntdisk.html#766
を見て、コマンドを叩いて設定をしたがうまくいかない。駄目元でpostgresユーザのホームディレクトリ(Windowsではなんて言うんだ?要するに、C:Documents and Settingspostgresの直下)に対象ディレクトリを作り、GUIを使わずにpsqlからコマンドを叩いたら設定できた。しかし、pdAdminIIIでもできたのかもしれない。
そして、今度こそのレストア。存在するものについては作成時に既存と言われてエラーになる。削除の方法がわからなかったので、コマンドラインでdropdbして空のDBをcreatedbした。いい方法があるかは今はわからない。
レストアは面倒だがGUIを使った。一度入力すればヒストリで楽なのかもしれないが、バックアップファイルの名前を入力したくなかったのでpgAdminIIIを使った。テーブル空間がそろって空のデータベースに対してのレストアはうまくいった。
一時間以上、try & error、調査、の繰り返し。長かった。これで本当にやりたかった作業ができる。

コメント