如何强制ActiveRecord识别迁移中的架构更改?

时间:2012-06-26 19:32:38

标签: ruby-on-rails migration

我正在开发一个Rails项目,由于性能原因,该项目有一些用纯SQL编写的迁移。他们工作正常,直到我们稍后尝试运行change_column。如果我们尝试一次迁移,change_column迁移将失败,并显示以下错误消息:

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进行的更改?

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找reset_column_information

http://apidock.com/rails/v3.2.3/ActiveRecord/ModelSchema/ClassMethods/reset_column_information

但基于错误消息我不认为这是正确的修复