【问题标题】:Shoudn't rake db:migrate version=0 remove all tables created in my migrations?不应该 rake db:migrate version=0 删除在我的迁移中创建的所有表?
【发布时间】:2015-08-18 10:06:11
【问题描述】:

我正在尝试测试从 version=0 到最新版本的迁移,但是当我运行 rake db:migrate version=0 时,它不会删除任何表。

为什么?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

不要自始至终测试您的迁移。迁移只是为了对数据库应用更改,而不是从头开始构建它 - 这就是 schema.rb 的用途。

要从头开始重建您的数据库,请使用rake db:schema:load,它将从schema.rb 构建您的数据库。

事实上,关于迁移,有些人甚至会删除旧的迁移,并且已经在需要运行的任何地方运行。真的,没有必要把它们留在身边。

一次必须运行的迁移越多,出现问题的可能性就越大。甚至不要费心去尝试,这是徒劳的练习。你永远不需要这样做。

【讨论】:

  • 如果我将所有迁移合并到 schema.rb,我应该在 ActiveRecord::Schema.define(version: xxxxx) do 中放置什么版本?
  • 我认为您永远不需要“将所有迁移合并到 schema.rb”。 Rails 会自动为您管理 schema.rb,并在您每次执行任何需要更改的操作时自动生成它。 Rails 还会自动为您管理版本号。欲了解更多信息,请查看stackoverflow.com/questions/2979059/…
【解决方案2】:

您可以尝试 $ bundle exec rake db:rollback 来卸载前一个表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2013-04-17
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多