web-dev-qa-db-ja.com

Postgres 9.6.2データベースでpg_restoreを実行すると、このエラーは何を意味しますか?

Rails 5.0.xアプリケーションをPostgres 9.6.1を備えたHerokuで実行しています。プルダウンしてpg_restore --exit-on-error --verbose --clean --no-acl --no-owner -h localhost -d database_development ~/Documents/Backups/myproduction.dump

次のエラーが発生します。

pg_restore: connecting to database for restore
pg_restore: dropping FK CONSTRAINT trial_versions fk_Rails_f888baa05c
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3091; 2606 16768 FK CONSTRAINT trial_versions fk_Rails_f888baa05c u7dok58iar41mh
pg_restore: [archiver (db)] could not execute query: ERROR:  constraint "fk_Rails_f888baa05c" of relation "trial_versions" does not exist
    Command was: ALTER TABLE ONLY "public"."trial_versions" DROP CONSTRAINT "fk_Rails_f888baa05c";

このエラーは私に何を伝えていますか?これまでにこの問題が発生したことはありません。これは最近起こったばかりであり、トラブルシューティングを開始する前に、まずエラーを理解する必要があります。

5
Nona

ダンプファイルが取得されたデータベースには、特定の外部キー制約が定義されています。しかし、ターゲットデータベースはそうではありません。おそらく誰かが行って、最後のダンプ以降、それをダンプされたデータベースに追加したためです。 --clean、それらを再作成する前に、ターゲットデータベースからダンプファイルに存在するすべてのオブジェクトを削除しようとしています。ドロップするターゲットデータベースに存在しないため、失敗しています。

あなたは付け加えられます --if-existsをrestoreコマンドに追加します。または、--exit-on-errorコマンドから、そしてあなたが得るエラーメッセージを無視してください。

6
jjanes