0

几个月前,我不小心删除了 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

4

1 回答 1

0

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

  • 20110415064108_create_users.rb

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

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

于 2012-08-04T15:24:36.583 回答