Ruby on rails 我可以只恢复Heroku数据库备份中的记录吗?

Ruby on rails 我可以只恢复Heroku数据库备份中的记录吗?,ruby-on-rails,database,postgresql,heroku,heroku-postgres,Ruby On Rails,Database,Postgresql,Heroku,Heroku Postgres,我的Rails Heroku托管项目的迁移文件变得非常混乱,所以我想合并它们。我想我可以: 使用Heroku pg:backups:capture--app appname执行Heroku数据库备份 添加一个新的迁移文件,删除所有我的表,并在开发和生产中运行它 删除我的所有迁移文件,添加新的、更整洁的迁移文件,以及my old schema.rb中的所有信息,并在开发和生产中运行它们,然后 使用Heroku pg:backups:restore b001 database\u URL--app

我的Rails Heroku托管项目的迁移文件变得非常混乱,所以我想合并它们。我想我可以:

  • 使用Heroku pg:backups:capture--app appname执行Heroku数据库备份

  • 添加一个新的迁移文件,删除所有我的表,并在开发和生产中运行它

  • 删除我的所有迁移文件,添加新的、更整洁的迁移文件,以及my old schema.rb中的所有信息,并在开发和生产中运行它们,然后

  • 使用Heroku pg:backups:restore b001 database\u URL--app appname还原我的Heroku数据库

  • 这正是我所做的。我假设数据库还原只是用备份数据库中的记录填充当前数据库。然而,实际发生的是,它用旧数据库替换了整个当前数据库。这是一个问题,因为我现有的迁移文件现在都被视为新文件,并且它们无法运行,因为它们要创建的表已经存在。这意味着我无法添加任何新迁移,因为现有迁移无法运行。我可以删除所有现有的迁移文件,但这似乎是非常糟糕的做法


    局势是否可以挽救?理想情况下,我只需运行迁移并使用备份数据库中的记录填充数据库—这可能吗?

    迁移文件其实并不重要,可能只是将它们全部删除。一旦你删除了所有的文件,你就可以创建新的文件,而不会试图运行旧的东西。请参考:我认为“清理”迁移没有任何好处,迁移会显示数据库的历史记录,重构迁移时会丢失信息。对于一个干净的数据库模式,您已经有了db/schema.rb,您可以运行
    rails db:schema:load
    来加载模式,而不运行迁移。我不会重构迁移。迁移文件其实并不重要,也许只是将它们全部删除。一旦你删除了所有的文件,你就可以创建新的文件,而不会试图运行旧的东西。请参考:我认为“清理”迁移没有任何好处,迁移会显示数据库的历史记录,重构迁移时会丢失信息。对于一个干净的数据库模式,您已经有了db/schema.rb,您可以运行
    rails db:schema:load
    来加载模式,而不运行迁移。我不会重构迁移。