[英]Does Heroku pgbackups:restore rebuild the database or just repopulate it?
我正在嘗試將Heroku上的生產數據庫復制到我的登台服務器。
我的登台服務器已經超越了我的生產服務器,並且遷移創建了一個額外的表。 我現在想干運行遷移以在生產數據庫上添加該表,因此希望還原我的暫存數據庫以便這樣做。
問題是,每次我restore
臨時數據庫restore
到生產數據庫時,表格都會粘在一起。 我期待數據庫被銷毀和重新填充,但它似乎只是被重新填充。
heroku pgbackups:url b104 --app production
# 'http://s3.amazonaws.com/...'
heroku pgbackups:restore DATABASE 'http://s3.amazonaws.com/...' --app staging
每次我這樣做,我發現“更新”的表仍然存在。
pgbackups:restore
實際上是恢復表結構還是簡單的數據 - 這里發生了什么?
還原是一種簡單的Postgres還原,因此基本上是數據的腳本版本。
為此,您需要首先對數據庫進行核對,然后從數據庫腳本重建它:
heroku pg:reset
heroku pgbackups:restore blah...
正如neil所說,pgbackups:restore只會移動數據並且不會改變實際的db結構。
完整的數據庫恢復(更改app-production,app-staging和migration_number以適合您的應用):
首先,從您的生產中獲取當前的遷移。
heroku run rake db:version --app app-production
重置staging db(自然,如果需要,備份它)
heroku pg:reset DATABASE_URL --confirm app-staging
運行遷移直到migration_number以適應生產數據庫結構
heroku run rake db:migrate VERSION=current_migration_number --app app-staging
捕獲生產應用程序
heroku pgbackups:capture --app app-production
將數據推送到臨時應用程序
編輯 - 如果您使用的是heroku工具帶,語法模式已從
pgbackups:action_name
更改為pg:backups action_name
heroku pgbackups:restore DATABASE "heroku pgbackups:url --app app-production" --app app-staging
現在,staging db應該與生產數據和結構匹配
heroku run rake db:migrate --app app-staging
希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.