1. ホーム
  2. postgresql

pg_restoreは正常に戻りますが、実際にデータベースをリストアしていないのはなぜですか?

2023-09-12 22:32:20

質問

私は、以下のコマンドを使用してダンプした、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>