我正在开发一个 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 所做的更改?