在我無盡的愚蠢中,我使用mysql更改了mysql數據庫而不是遷移,因此現在db與遷移不同步。從更改分區重新創建schema.db
我的問題是,如果可以生成缺少的遷移(步驟)和新的schema.db而不丟失數據和db中的更改*
*更改如添加表格,列。
THX
在我無盡的愚蠢中,我使用mysql更改了mysql數據庫而不是遷移,因此現在db與遷移不同步。從更改分區重新創建schema.db
我的問題是,如果可以生成缺少的遷移(步驟)和新的schema.db而不丟失數據和db中的更改*
*更改如添加表格,列。
THX
至於重建的遷移,你的運氣,但如果你走這條路線,你可以重新創建模式
rake db:schema:dump
,創建一個新的數據庫(當新環境等等),你會想做
RAILS_ENV=some_env rake db:schema:load # specify the env if not development
,而不是
rake db:migrate
由於您的遷移不符合當前模式。
運行schema:load
時要小心,因爲它會重新創建數據庫。即您將失去所有數據。
這將是很好的創建缺失的遷移。您可以通過手動將時間戳添加到schema_migrations
表來修復您的本地開發數據庫。這是手動更改架構的結果。
還要確保rake db:migrate:reset
(刪除所有表並從頭開始遷移)將產生與rake db:schema:dump
相同的db/schema.rb
。數據庫模式中的任何更改都必須通過遷移自動進行。
耙db:schema:load
的問題是它會強制創建表。
是的,但這會導致表數據的完全丟失,對不對? – user1980779
是的,它只會從頭開始創建表格,但不會創建數據。所以另一種方法是首先將數據導出到某個地方,然後重置,以便稍後再次加載它。 –
謝謝,它現在適用於我.. – user1980779