我可以运行heroku运行rake db:使用tap和heroku db:migrate后迁移吗?

时间:2012-08-04 15:08:20

标签: ruby-on-rails heroku database-migration taps

几个月前我在heroku cedar堆栈上意外删除了我的生产数据库。我尝试通过heroku run rake db:migrate重新创建数据库,但是我的迁移出了问题,但是失败了。然后我安装了水龙头并做了一个heroku db:push,所有这一切都与世界相符。

我现在可以在运行本地迁移后使用heroku run rake db:migrate来更新生产数据库,还是我永远与点击和heroku db:push绑定?

提出这个问题或许是一种更好的方式:heroku run rake db:migrate会进行所有迁移(可能会失败),还是只会经历自上次heroku db:push以来发生的迁移?< / p>

1 个答案:

答案 0 :(得分:0)

查看数据库中的schema_migrations表。这是Rails用于确定要运行的迁移的内容。它有一个列,其中包含Rails已应用于您的应用程序的每个迁移版本。例如,我在db/migrate中有以下文件:

  • 20110415064108_create_users.rb

20110415064108在我的schema_migrations表格中列为一行。自上次运行db/migrate以来存在的rake db:migrate中的每个其他迁移文件也是如此。

假设点击(我对此一无所知)将此schema_migraions表格全部推送到制作中,您应该能够创建新的迁移并使用rake db:migrate运行它们在生产中没有问题(只会应用那些新创建的迁移,因为他们的版本#s是生产schema_migrations表中唯一缺少的版本)