【发布时间】:2011-10-29 04:42:51
【问题描述】:
我在 heroku 上有 3 个我的 rails 应用程序实例(测试、阶段和生产)。当我想测试真实用户数据发生的问题时,我想先进行 heroku db:pull --app 生产,然后再进行 heroku db:push --app 测试。问题是此时 heroku rake db:migrate --app test 会抛出错误,因为迁移尝试创建的列已经创建。
我的理解是 heroku db:push 将数据推送到现有的数据库架构中,而不是从字面上推送整个数据库(包括架构)。这意味着我们推送的架构可能比我们推送的迁移表更高级,因为此迁移表将丢失尚未在我们从中提取的数据库上运行但显然在我们推送的数据库上运行的迁移记录.
我的第一个问题是,我对它的工作原理的理解是否正确?我的第二个问题是如何解决这个问题,以便我可以提取生产数据,将其粘贴在测试中并运行迁移而不会收到此错误。理想情况下,我想复制生产数据库并将其粘贴到测试中,然后完全迁移它,因为如果我能做到这一点,我就不必担心测试中的现有模式。有没有办法做到这一点?
如果没有,有没有办法通过在新的迁移表中填充已经在我的测试数据库上运行的每个迁移的记录来伪造迁移已经运行?
【问题讨论】:
标签: activerecord heroku