每次我提交有遷移的代碼時,出於某種原因,我得到了一堆我以前從未寫過的模式更改。每次我提交時意外的模式更改
例如,我將編寫遷移以在用戶...上添加一列,但在運行遷移之後,架構文件將包括對先前舊代碼根本不在當前分支中的10個更改。
我該如何解決這個問題?
每次我提交有遷移的代碼時,出於某種原因,我得到了一堆我以前從未寫過的模式更改。每次我提交時意外的模式更改
例如,我將編寫遷移以在用戶...上添加一列,但在運行遷移之後,架構文件將包括對先前舊代碼根本不在當前分支中的10個更改。
我該如何解決這個問題?
有兩種可能性:
您還沒有刪除的代碼,你從schema.rb文件試圖忽略以前的遷移。
你對rails非常陌生,並且試圖手動刪除schema.rb文件中的字段,認爲它會與數據庫同步。
無論哪種方式:刪除所有,如果您有沒有準備好,然後使用命令只是回滾數據庫到原來的空版本,你不想遷移文件:
rake db:rollback VERSION=0
然後:
:現在你有合適的遷移文件,使用命令遷移到DATABSE
這應該給你一個準確的schema.rb文件
模式文件反映到數據庫架構。我認爲你已經在之前的舊代碼中改變了模式,但沒有恢復(回滾)它,刪除它並開始編碼新的遷移。
你應該做的事是消除代碼和數據庫之間的差異。
解決方案:
Checkout與您的老枝,並通過運行rake db:migrate:down VERSION=20161106xxxxxx
回滾架構更改。
或
rake db:rollback STEP=n
回滾架構更改由當前分支進行rake db:rollback STEP=m
回滾通過舊的分支架構更改。rake db:migrate
,並且您不會看到模式文件中的額外更改。參考: