drop_table迁移不起作用

时间:2016-07-31 06:24:12

标签: ruby-on-rails

我在删除我在迁移中创建的表时遇到问题。

执行rake db:migration VERSION=0似乎是成功的但是查看mysql表仍然存在且schema.rb数据未被删除。

def up
create_table :subjects do |t|
    t.string "name"
    t.integer "position"
    t.boolean "visible", :default => false
    t.timestamps 
end
def down
    drop_table :subjects
end

错字编辑:主题 - >受试者

只有在我使用def down时才会发生这种情况。 def change没有问题,删除了表格。

3 个答案:

答案 0 :(得分:1)

你应该这样重写:

def up
  drop_table :subjects
end

def down
  create_table :subjects do |t|
    t.string "name"
    t.integer "position"
    t.boolean "visible", :default => false
    t.timestamps 
  end
end

注意如何使用:主题而不是:主题

在此之后,您现在应该运行rake db:migrate。要恢复表,请运行rake db:rollbackup方法应描述迁移down方法回滚

答案 1 :(得分:1)

您的迁移很好,但需要drop_table :subjects而不是drop_table :subject

答案 2 :(得分:0)

请尝试:

rake db:migrate:down VERSION=xxx

其中xxx是您的迁移文件的版本。例如,如果您的迁移文件名为20160710042640_create_subjects.rb,则运行db:migrate:down VERSION=20160710042640