web-dev-qa-db-ja.com

pg_restoreコマンドが機能しないのはなぜですか?

昨日、次のコマンドを使用して、さまざまなPostgreSQLデータベースのバックアップを作成しました。

pg_dump -Fc -d junk -h localhost -p 5434 -U postgres -W > z:\pg_dump\96_junk.dump

データベースごとに個別のバックアップを作成しました。

今日は、次のコマンドを使用して、アップグレードしたデータベースサーバーに復元しようとしています。

pg_restore -h localhost -p 5434 -U postgres -W -C -v z:\pg_dump\96_junk.dump

上記を使用してpg_restoreを実行すると、データベースが復元されたようです。コンソール画面には、一連のSQLステートメントと、このデータベースに対して表示されると予想されるその他のメッセージが表示され、最後に、「PostreSQLデータベースダンプが完了しました」が表示されます。

データベースを確認すると、データベースが存在しません。何が悪いのですか?

採用バージョン情報

  • バージョン9.6.0で作成されたバックアップ

  • バージョン9.6.1を使用して復元しようとしています

1

-dまたは--dbname引数を使用して、開始するDBの名前を指定してみてください。これは私が同じ問題を抱えていたときに私のために働いた。ターゲットDBである必要はないことに注意してください。

pg_restore -h localhost -p 5434 -U postgres -d postgres -W -C -v z:\pg_dump\96_junk.dump
2
Jen R-S

Jen R-Sが言ったように、「-d」オプションを使用すると機能します。

「-d」を使用しない場合にコンソールに表示されていた出力は、予想される動作です。ドキュメントで言う:

pg_restoreは2つのモードで動作できます。データベース名が指定されている場合、pg_restoreはそのデータベースに接続し、アーカイブの内容をデータベースに直接復元します。 それ以外の場合、データベースの再構築に必要なSQLコマンドを含むスクリプトが作成され、ファイルまたは標準出力に書き込まれます。このスクリプト出力は、pg_dumpのプレーンテキスト出力形式と同等です。

データベースが指定されていない場合、pg_restoreはすべてのコマンドを生成し、出力をファイルにリダイレクトして、ファイルを直接実行できます。

0
Mauricio Cacho