【问题标题】:Can I run heroku run rake db:migrate after using taps and heroku db:push?我可以在使用 taps 和 heroku db:push 后运行 heroku run rake db:migrate 吗?
【发布时间】:2012-08-02 07:44:50
【问题描述】:

几个月前,我不小心删除了 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 以来发生的迁移?

【问题讨论】:

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


    【解决方案1】:

    查看数据库中的schema_migrations 表。这是 Rails 用来确定要运行哪些迁移的方法。它有一列包含 Rails 已应用于您的应用程序的每个迁移版本。比如我在db/migrate中有如下文件:

    • 20110415064108_create_users.rb

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

    假设 taps (我对此一无所知) 将这个 schema_migraions 表全部推送到生产环境,您应该能够创建新的迁移并在生产环境中使用 rake db:migrate 运行它们而不会遇到麻烦(只会应用那些新创建的迁移,因为它们的版本号是生产schema_migrations 表中唯一缺少的版本)

    【讨论】:

    • 感谢有关 schema_migrations 表的提示。我刚刚进行了迁移,将其推送到生产环境,heroku run rake db:migrate 工作了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-03-21
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多