我刚刚合并了一个分支并在暂存时运行rake db:migrate
,它还原了我的所有迁移。 (而不是迁移新的)
然后我回到master,重新加载了db并运行了迁移,然后db再次被淘汰了。
有关如何调试的提示吗?
为什么db:migrate
甚至会回滚任何迁移?
有关如何使用不同命令的任何提示,这些命令告诉rails只能抓取新的迁移并执行up
并且永远不会回滚任何迁移?
答案 0 :(得分:4)
如果设置了VERSION
环境变量,则rails将迁移到该版本而不是最新版本。特别是因为rails调用to_i
,如果它包含非整数值,它将迁移到版本0。您可以通过运行env
(列出所有环境变量)或(echo $VERSION
)来检查这一点
这在很大程度上是rake不支持在命令行上将参数传递给任务的遗留物,因此人们会使用环境变量来模拟它们以便你可以这样做
rake db:migrate VERSION=xyz