Ruby on rails Rake db:migrate刚刚恢复(回滚)所有迁移

Ruby on rails Rake db:migrate刚刚恢复(回滚)所有迁移,ruby-on-rails,rails-migrations,Ruby On Rails,Rails Migrations,我刚刚合并了一个分支并运行了rake db:migrate on staging,它恢复了我所有的迁移。而不是迁移新的 然后我回到master,重新加载数据库并运行迁移,再次,数据库像以前一样被清除 有关于如何调试的提示吗 为什么db:migrate甚至会回滚任何迁移 关于如何使用另一个命令的提示,该命令告诉rails只抓取新的迁移并完成,并且永远不会回滚任何迁移?如果设置了版本环境变量,rails将迁移到该版本,而不是最新版本。特别是因为rails调用了_i,如果它包含一个非整数值,它将迁移到

我刚刚合并了一个分支并运行了rake db:migrate on staging,它恢复了我所有的迁移。而不是迁移新的

然后我回到master,重新加载数据库并运行迁移,再次,数据库像以前一样被清除

有关于如何调试的提示吗

为什么db:migrate甚至会回滚任何迁移

关于如何使用另一个命令的提示,该命令告诉rails只抓取新的迁移并完成,并且永远不会回滚任何迁移?

如果设置了版本环境变量,rails将迁移到该版本,而不是最新版本。特别是因为rails调用了_i,如果它包含一个非整数值,它将迁移到版本0。您可以通过运行env列出所有环境变量或echo$VERSION来检查这一点

这在很大程度上是因为rake不支持在命令行上向任务传递参数,所以人们使用环境变量来模拟它们,这样您就可以执行任务

rake db:migrate VERSION=xyz
如果设置了版本环境变量,那么rails将迁移到该版本,而不是最新版本。特别是因为rails调用了_i,如果它包含一个非整数值,它将迁移到版本0。您可以通过运行env列出所有环境变量或echo$VERSION来检查这一点

这在很大程度上是因为rake不支持在命令行上向任务传递参数,所以人们使用环境变量来模拟它们,这样您就可以执行任务

rake db:migrate VERSION=xyz

你说得对,echo$VERSION给出了0.2.0字符串,但我没有把它放在那里。对于如何在不依赖好奇者版本的情况下进行迁移,您有什么快速提示吗?除了unset$VERSION之外,您不知道可以做些什么。您无法找到环境设置的来源。在我的例子中,一个解决方法是在Rakefile中添加ENV['VERSION']=nil并添加注释。没错,echo$VERSION给出了0.2.0字符串,而我没有将它放在那里。对于如何在不依赖好奇者版本的情况下进行迁移,您有什么快速提示吗?除了unset$VERSION之外,您不知道可以做些什么。您无法找到环境设置的来源。在我的案例中,一个解决方法是在Rakefile中添加ENV['VERSION']=nil并添加注释。