2012-08-04 58 views
0

几个月前我意外删除了我的生产数据库heroku雪松堆栈。我试图通过heroku run rake db:migrate重新创建数据库,但是我的迁移出现了问题,并且失败了。然后,我安装了水龙头,并做了一个heroku db:push和一切都是正确的与世界。我可以运行heroku运行rake数据库:迁移后使用水龙头和heroku db:推?

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

也许更好的方法来问这个问题:heroku run rake db:migrate会经历我所有的迁移(并可能失败),还是只会通过自上次heroku db:push以来发生的迁移?

回答

0

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

  • 20110415064108_create_users.rb

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

假设水龙头(我一无所知)其全部推这个schema_migraions表的生产,你应该能够创造新的迁移和与rake db:migrate生产无故障(只有那些新创建的迁移运行它们会因为他们的版本号是schema_migrations中唯一缺失的版本号。

+0

感谢有关schema_migrations表的提示。我刚刚进行了迁移,将其推到了生产环境中,然后heroku运行rake db:migrate工作。谢谢。 – tbone 2012-08-04 15:31:52

相关问题