我正在开发一个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进行的更改?
答案 0 :(得分:0)
我认为你正在寻找reset_column_information
http://apidock.com/rails/v3.2.3/ActiveRecord/ModelSchema/ClassMethods/reset_column_information
但基于错误消息我不认为这是正确的修复