我是铁杆新手,为了理解这个概念,我最近一直在玩迁移。有时,我使用相当新的更改方法进行迁移,但也使用向上和向下方法,并且调用db:rollback不起作用。因此,我必须禁止这些迁移,并重置我的数据库。
然而,我在想:有没有办法“测试”迁移,以了解回滚调用是否有效? 因为如果我们有一个填充数据库,并且我们实现了无法回滚的回滚,重置数据库可能是个问题......
答案 0 :(得分:1)
在迁移中放入大量代码可能会非常棘手。就个人而言,我只坚持修改模式的几行,即只添加/删除列,更改列名/数据类型以及添加/删除索引。
我相信这是Rails迁移到change
API的原因。只要您坚持简单的架构更改,您就可以随时回滚而无需测试迁移。
答案 1 :(得分:0)
迁移的意图是向前发展。如果出现问题,您只能在开发过程中返回,但只有在完成迁移后才能立即返回,并且在其他计算机上没有进行迁移时。
例如,我创建了一个迁移,迁移,看到我做了一个拼写错误,回滚,修复了迁移并再次迁移。
现在,如果与此同时,我的超级同事已经使用旧迁移迁移了他的数据库,他将永远不会知道我修复了迁移,因此他仍然会有错误(因为重做迁移不会改变任何迁移)架构的版本)。因此,如果是这种情况,我宁愿添加一个新的迁移,而不是回滚来修复旧的迁移,而不是修复/编辑旧的迁移。
在团队环境中,但在拥有多个部署平台时,这是imho的首选方式。