78

次のコマンドを使用してダンプしたLinuxサーバーにPostgres8.4データベースがあります。

pg_dump --format=c --exclude-table=log --file=/path/to/output my_db

次に、作成したファイルをローカルのWindows 7マシンにFTPで転送し、次のコマンドを使用してファイルをローカルのPostgres8.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

指定されたホストとユーザー名が完全にナンセンスであるにもかかわらず、このコマンドを実行すると、エラーなしでコマンドからまったく同じ出力が得られます。

誰かが以前にこれに遭遇したことがありますか、またはこれを引き起こすことによって何ができるかを知っていますか?

4

2 に答える 2

131

最初に接続する有効なデータベースの名前を追加する必要があります。そうしないと、コンテンツがSTDOUTにダンプされます。

pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>
于 2011-05-05T16:31:59.140 に答える
11

これはまだ紛らわしいです、私は--dbnameが私が作成したいdbであるべきであるというこのことを実行しようとしました。

pg_restore --create --exit-on-error --verbose --dbname=jiradb jiradb.tar

間違い!!

文字通り--dbname=postgresである必要があり、-createはファイル内の名前から実際のデータベースを作成します。私の場合、tarバックアップから復元しました

pg_restore --create --exit-on-error --verbose --dbname=postgres jiradb.tar
于 2018-12-14T19:12:56.977 に答える