【问题标题】:How to rollback to beginning and recreate/rebuild new migrations如何回滚到开始并重新创建/重建新的迁移
【发布时间】:2010-02-10 15:57:00
【问题描述】:

所以这是我第一个真正的 Ruby on Rails 项目。我已经吸取了教训——我没有使用迁移进行所有更改,所以事情有些混乱。

从新迁移文件重新开始并重建架构等的最佳方式是什么?我的项目太远了,无法重建整个项目,但距离我关心丢失迄今为止的迁移还不够远。我也不介意丢失数据库中的数据。我试图回滚到开头,但其中一些失败了。

我知道这是一种糟糕的状态,但吸取了教训。

编辑: 我刚刚删除了所有迁移文件并使用 db:schema:dump 重建了架构文件。 我认为这使我在现有数据库中处于干净状态,只是丢失了迁移。

【问题讨论】:

    标签: ruby-on-rails migration


    【解决方案1】:

    如果你想向后迁移一些步骤,你可以

    rake db:rollback STEP=2
    

    该命令会将您的数据库 2 迁移回来。 如果您需要更多有关 rake 命令的帮助,只需键入

    rake -T
    

    该命令将列出您在应用程序中的所有任务。

    【讨论】:

      【解决方案2】:

      如果您不担心丢失数据,那么请这样做

      rake db:purge
      

      它应该只是删除你的数据库

      【讨论】:

      • 这是对 Rails 3 中 rake db:drop 的更改(rake db:drop:all 用于所有环境)
      • rake db:reset 更像
      【解决方案3】:

      您的schema.rb 文件应包含数据库中的实际架构。您可以将其用作创建迁移的起点。您可以使用 :force => true 参数为每​​个表创建一个新迁移以覆盖旧表。之后您可以删除旧的迁移(您可能还需要从 schema_migrations 表中删除它们的条目)。

      另一种选择是更新旧迁移以匹配您当前的架构。

      【讨论】:

      • 谢谢——我刚刚删除了迁移,清空了 schema_migrations 表,然后运行了“rake db:reset”。我的架构不是完全最新的,所以在那之后我不得不对数据库进行一些调整。如果我必须再次这样做,我会做同样的事情,但尝试找出是否有办法从数据库的当前状态重新创建架构文件。
      猜你喜欢
      • 2013-07-17
      • 1970-01-01
      • 2020-07-20
      • 2018-03-07
      • 2012-05-04
      • 2018-05-24
      • 2016-10-27
      • 2015-06-08
      • 2018-08-01
      相关资源
      最近更新 更多