次のコマンドを使用してダンプしたLinuxサーバーにPostgres 8.4データベースがあります。
pg_dump --format=c --exclude-table=log --file=/path/to/output my_db
次に、作成したファイルをローカルのWindows 7マシンにftpし、次のコマンドを使用してローカルのPostgres 8.4インスタンスにファイルを復元しようとします。
pg_restore --create --exit-on-error --verbose c:\path\to\file
Restoreコマンドは、データベースを作成し、データベースに接続し、他のすべてのテーブルを期待どおりに作成したと主張する大量の出力を生成します。ただし、pgAdminを使用してローカルマシン上のデータベースを表示すると、復元されたデータベースはまったく存在しません。
トラブルシューティングを試みて、次のコマンドを試しました。
pg_restore --create --exit-on-error --verbose --Host=blahblah --username=no_one c:\path\to\file
指定されたホストとユーザー名がまったく無意味であるにもかかわらず、このコマンドを実行すると、コマンドからまったく同じ出力がエラーなしで得られます。
誰もこれに遭遇したことがありますか、これを引き起こすことによって何ができるか知っていますか?
最初に接続するために有効なデータベースの名前を追加する必要があります。追加しないと、内容がSTDOUTにダンプされます。
pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>
これはまだわかりにくいので、-dbnameを作成したいdbにする必要があるということを実行しようとしました。
pg_restore --create --exit-on-error --verbose --dbname=jiradb jiradb.tar
違う!!
文字通り--dbname postgresである必要があります。--createはファイル内の名前から実際のdbを作成します。私の場合、tarバックアップから復元しました
pg_restore --create --exit-on-error --verbose --dbname=postgres jiradb.tar