2012-07-19 342 views
1

我使用MySQL作爲數據庫在我的應用程序,如果我想要一個新表添加到它,我可以使用遷移,說 導軌產生遷移名稱:字符串年齡:整數Ruby on Rails的數據庫遷移

或者只是在mysql中創建一個新表。 他們兩個有什麼區別嗎?

回答

4

是的,有很大的差異。你不應該直接在數據庫中創建一個表格,除非你有充分的理由(例如它不直接影響你的Rails應用程序)。

如果你在mySQL中創建一個表格,那麼你將可以訪問它創建一個匹配模型,但是,當您部署數據庫時,還需要對生產數據庫進行相同的更改。這意味着有一個額外的部署步驟很容易被遺忘。如果您有多個人參與該項目,或者您正在使用多臺機器,則這也適用。

直接創建表的另一個問題是您的數據庫沒有版本。如果您使用遷移,那麼您可以隨意在數據庫版本之間切換。你的遷移中有東西是否破壞你的應用簡單回滾到以前版本使用rake db:rollback

第三個含義是您的db/schema.rb文件不會反映數據庫。這會阻止您在日後傾銷您的計劃。如果你想從mySQL轉換到Postgres,你會發現事情非常困難,而不使用遷移。

0

當您通過遷移創建表時,schema.rb文件會更新以反映新表的添加。

遷移是首選路由,因爲您只需運行耙子任務rake db:migrate並在開發,測試和生產環境中創建所有表,而不是移植數據庫。

你可以在這裏的官方文檔閱讀更多關於遷移 - http://guides.rubyonrails.org/migrations.html