我有一个数据库设置为我的Rails的安装和一些迁移成立。 我想能够重置我的数据库回落到无表/约束/等,但不能找到一个合理的方式做到这一点不知道迁移的数量或第一次迁移的时间戳。 下面是我的选择,因为我看到他们:
-
rake db:migrate:reset
-
rake db:migrate:down VERSION=20090701154839
其中20090701154839是与第一迁移相关的时间戳 -
rake db:rollback STEP=15
,其中已经有15个迁移
这个问题db:migrate:reset
是它第一次下降到数据库(它db:drop
, db:create
,然后db:migrate
)。
这个问题db:migrate:down
的是,我不想编码开头的版本。
这个问题db:rollback
是我不知道的步数是回到起点。
我有哪些选择?
rake db:migrate VERSION=0
它的工作原理,即使你使用较新的时间戳的迁移文件。
更新:我刚刚测试此on Rails的3.2.1,它仍然有效。 它可以运行所有已知的迁移的“向下”的一部分schema_migrations
。 我不知道,如果它的工作在3.1或没有,但下面的评论表明,该功能是在这段时间内打破。
除了JDL的(正确的)上述溶液,另一黑客-Y的方式来达致这是做rake db:rollback STEP=1000000
,其中1000000
是一个大数字,比你永远不会有迁移的数量较大。 它会尽可能可以回滚高达1000000
次,或者你把作为然而多次STEP
。
这是适度的hackish,但你可以做一个查询找到schema_migrations的第一个版本,然后调用耙分贝:迁移:下去把那个版本(我假设你想打包为您的应用“重置”脚本)。
这当然会,要求在所有的迁移向下方法正常工作。
文章来源: How can I migrate my database with rails to the first revision without dropping the database first?