2016-10-05 129 views
0

我對rails還是一個新手,我對rails移植有一些疑問。rails db:在手動更改數據庫後,migrate不起作用

我正在使用rails 5,windows 8.我生成了一個模型並編寫了一些代碼,它創建了一個包含列的表格。然後,我從我的開發數據庫(MySQL)中刪除了該表,並嘗試執行db:migrate,看看它是否會創建寫入遷移文件的表和列。在執行db:migrate之後,它沒有在終端中顯示任何消息,也沒有創建表和列。

根據我的觀察,從schema_migrations中刪除我的遷移文件的版本並運行db:再次遷移,它工作並創建了表和列。

我想問一下爲什麼會發生這種情況,我開始開發一個大型數據庫模型時應該怎麼做。

我還想了解一些關於在rails上學習ruby的很好的資源材料的建議。

謝謝!

回答

0

它是因爲rake db:migrate僅運行當前env尚未運行的遷移。所以如果你運行db:migrate,然後手動刪除表格數據庫,你的應用程序不知道這一點。

MIgration Guides

+0

感謝Piotor!所以在更改數據庫本身時,我應該使用遷移文件來完成它?是否可以使用現有遷移文件更改表格? – parapapao

+0

如果您編寫了遷移文件並運行了rake數據庫:將其更好地遷移以編寫另一個遷移。你不必,但它更清潔。如果您想再次運行所有遷移,您可以執行'rake db:drop db:create db:migrate'。爲了編輯上次遷移,您可以使用回滾,但一切都在指導之中。 – Argonus