比如我 clone 了一个 a 项目,a 项目的 mysql 数据库里的数据是通过 sql 文件导入的。所以我拉下来没法运行,因为我本地没有对应的表。那么解决办法我想到了 2 个。
一:重建一个 migration 任务,把里面需要对应到 mysql 数据库里表的每个字段都加上。但这里有个问题,我如果执行 rake db:migrate,它肯定会报错说字段已经有了。那么我就把 migration 任务里的 def change 改为 def down,虽然 down 是用来做回滚的,但它好像也有强制执行的功能。可以把表强行迁移了。
1.在这里,通过 migration 处理这个问题的正确办法是什么?我知道我把 change 改为 down 很不好,毕竟 down 方法不是为了这个而存在的。
二:我可以直接在 schema_migrations 表里插入对应的 migration 文件下的所有任务清单的文件名(以时间戳命名的)。这样就可以让 rails 认为迁移任务是已经完成了的。只要数据表和 model 对应,就可以跑起来。
2.在这里,如果我有 3 个迁移任务文件,2015.rb 2014.rb 2013.rb,我必须按顺序将 2013 2014 2015 插入表内?如果是,那到底该把最新时间戳最后插入,还是最先插入?