6

postgresを使用してRailsプロジェクトを作成していますが、サーバーにいくつかのデータがあります。そして、リモートエンドからローカルにデータをダンプしたいので、それを行うためのスクリプトを作成しますが、いくつかのエラーが発生します。

これはダンプスクリプトです:

run "PGPASSWORD='#{remote_settings['password']}' 
pg_dump -U #{remote_settings["username"]} #{"-h '#{remote_settings["host"]}'" 
if remote_settings["host"]} 
'#{remote_settings["database"]}' > #{remote_sql_file_path}"

転送するコードがいくつかあります。

Transport codes

そして、これは復元スクリプトです。

run_locally "PGPASSWORD='#{local_settings['password']}' psql -U 
#{local_settings["username"]} -d #{local_settings["database"]} 
-f #{local_sql_file_path}"

データファイルは正常に取得されましたが、**復元スクリプトの実行時にエラー*が発生した場合:

psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:46: ERROR:  relation        "refinery_images" already exists
psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:49: ERROR:  role "ib5k" does not exist
psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:60: ERROR:  relation "refinery_images_id_seq" already exists
psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:63: ERROR:  role "ib5k" does not exist
psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:83: ERROR:  relation "refinery_page_part_translations" already exists
psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:86: ERROR:  role "ib5k" does not exist
...
sql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:525: ERROR:  duplicate key  value violates unique constraint "refinery_images_pkey"
DETAIL:  Key (id)=(1) already exists.
CONTEXT:  COPY refinery_images, line 2: ""
psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:547: ERROR:  duplicate key value violates unique constraint "refinery_page_part_translations_pkey"
DETAIL:  Key (id)=(1) already exists.
CONTEXT:  COPY refinery_page_part_translations, line 8: ""
psql:tmp/production-ib5k_production-2013-02-21_18:42:09.sql:569: ERROR:  duplicate key value violates unique constraint "refinery_page_parts_pkey"
DETAIL:  Key (id)=(1) already exists.
CONTEXT:  COPY refinery_page_parts, line 8: ""
...

また、ローカルのデータベースは更新されません。それを解決する方法を知りたいですか?いくつかの引数を追加しますか?前もって感謝します。

4

1 に答える 1

19

-cor--clean引数をpg_dumpに使用できます。この引数は、コマンドを実行して作成する前に、既存のデータベースオブジェクトを削除します。

別の方法は、復元する前にそれらのオブジェクトを自分で削除することです。(おそらくdrop schemaまたはを使用してdrop databaseいます。)

注意して使用してください。

于 2013-02-21T11:38:46.960 に答える