2017-02-09 83 views
1

我最近将生产服务器迁移到Heroku。在这样做的时候,我跟着Heroku的documentation to export and import my database to their servers在数据库导入后迁移标记迁移

现在,当我尝试使用heroku run rake db:migrate迁移我的数据库时,出现表已存在的错误。看起来好像migrate从头开始,就好像数据库是新的一样。

如何快速转发db:migrate,以便从第二个最近的迁移文件开始? 自从数据库导入生产后,我对本地数据库进行了一次更改,现在我需要迁移生产数据库。

+1

备份旧数据库时,您没有转储'schema_migrations'吗? Rails会跟踪在数据库中运行了哪些迁移,因此复制数据库时不应出现任何迁移问题。 –

+0

我做了“pg_dump -U postgres -Fc --no-acl --no-owner database_name> backup.dump”。难道这不应该得到它? – Ryan

+0

本应该得到一切。恢复之前,您是否设置了数据库?这会将'schema.rb'应用到你的数据库(它将创建所有的表)。一些快速的黑客选项(你必须手动确保所有东西都在那里,如果你这样做的话处于正确的状态):(1)删除你所有的迁移,因为它们应该是临时的,并且现在清理掉, (2)手动填充'schema_migrations',以便db:migrate'认为它们都已经运行。 –

回答

0

由于我从来没有计划创建一个新的空数据库,我最终只是将所有旧的迁移从db/migrate移动到我命名为db/archive的文件夹。