2012-06-26 34 views
0

我正在研究一個Rails項目,它出於性能原因而使用純SQL編寫一些遷移。他們工作正常,直到我們稍後嘗試運行change_column。如果我們試圖在一次通過遷移,在遷移change_column將失敗,並出現以下錯誤信息:如何強制ActiveRecord識別遷移中的模式更改?

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT NULL' at line 1: ALTER TABLE `articles` CHANGE `state` `web_state` DEFAULT NULL 

大概Rails有不知道我們在以前的遷移通過SQL遷移。但是,如果我們在故障發生後再次運行rake db:migrate,那麼所有工作都會完美無缺。

如何強制Rails識別通過原始SQL進行的更改?

+0

這是什麼SQL遷移是什麼樣子? –

+0

@SergioTulentsev其中將近30人。我們正在遷移非rails數據庫,以便他們完成從重命名錶到添加/刪除/更改列的所有工作。 – bloudermilk

+0

嘗試將'--trace'作爲arg添加到rake命令中,以查看究竟哪個遷移正在進行。 – x1a4

回答