2016-11-05 49 views
1

每次我提交有遷移的代碼時,出於某種原因,我得到了一堆我以前從未寫過的模式更改。每次我提交時意外的模式更改

例如,我將編寫遷移以在用戶...上添加一列,但在運行遷移之後,架構文件將包括對先前舊代碼根本不在當前分支中的10個更改。

我該如何解決這個問題?

回答

0

有兩種可能性:

  1. 您還沒有刪除的代碼,你從schema.rb文件試圖忽略以前的遷移。

  2. 你對rails非常陌生,並且試圖手動刪除schema.rb文件中的字段,認爲它會與數據庫同步。

無論哪種方式:刪除所有,如果您有沒有準備好,然後使用命令只是回滾數據庫到原來的空版本,你不想遷移文件:

rake db:rollback VERSION=0

然後:

現在你有合適的遷移文件,使用命令遷移到DATABSE

這應該給你一個準確的schema.rb文件

2

模式文件反映到數據庫架構。我認爲你已經在之前的舊代碼中改變了模式,但沒有恢復(回滾)它,刪除它並開始編碼新的遷移。

你應該做的事是消除代碼和數據庫之間的差異。

解決方案:

Checkout與您的老枝,並通過運行rake db:migrate:down VERSION=20161106xxxxxx回滾架構更改。

  1. 在當前分支,運行rake db:rollback STEP=n回滾架構更改由當前分支進行
  2. 然後結帳共老枝執行rake db:rollback STEP=m回滾通過舊的分支架構更改。
  3. 簽出回當前分支,並運行rake db:migrate,並且您不會看到模式文件中的額外更改。

參考:

相關問題