【发布时间】:2010-08-05 19:37:54
【问题描述】:
如果我有两个迁移,mig1 和 mig2,我运行 rake db:migrate,然后我返回到 mig1 并更改列的默认值,当我再次运行 rake db:migrate 时会反映此更改吗?还是我必须为该列进行新的迁移才能进行更改?
【问题讨论】:
标签: ruby-on-rails ruby migration rails-migrations
如果我有两个迁移,mig1 和 mig2,我运行 rake db:migrate,然后我返回到 mig1 并更改列的默认值,当我再次运行 rake db:migrate 时会反映此更改吗?还是我必须为该列进行新的迁移才能进行更改?
【问题讨论】:
标签: ruby-on-rails ruby migration rails-migrations
您可以通过运行以下命令重做给定的 VERSION:
rake db:migrate:down VERSION=___________
rake db:migrate:up VERSION=____________
【讨论】:
您应该进行新的迁移或使用 rake db:rollback 任务移回运行相关迁移之前的数据库版本。不会自动获取对迁移脚本的更改。
会跟踪架构的当前版本并将其应用于迁移,因此运行 rake db:migrate 不会重新运行旧迁移。正是由于这个原因,您可以使用rollback 功能,只要您在迁移时提供了正确的self.down 方法。回滚执行这些向下方法,同时撤消迁移。
然后您可以编辑迁移并重新迁移。
【讨论】:
rake db:migrate:redo VERSION=____
【讨论】: