ruby删除了表,但无法通过迁移重新创建

时间:2014-03-06 00:50:54

标签: ruby-on-rails ruby postgresql rails-migrations

在回滚迁移中删除了一个表。迁移本身已更改,因此向下部分删除了表。 我运行了再次创建表的迁移

rake db:migrate:redo VERSION=20120912122332

==  CreateQuestionnaires: reverting =====================================
-- drop_table("questionnaires")
rake aborted!
PG::Error: ERROR:  table "questionnaires" does not exist

在重做迁移之前,它似乎正在尝试删除表。由于它不存在,其余的迁移无法运行。 这是正确的,如果是,我该如何重新创建表

2 个答案:

答案 0 :(得分:1)

该表已被删除。

我建议你使用

rake db:migrate VERSION=20120912122332

由于重做将再次尝试回滚,即删除您在早期阶段已经删除的表。因此,你正在失败。

答案 1 :(得分:0)

您可以编辑迁移并手动执行DROP TABLE,这样可以添加IF EXISTS以忽略DROP TABLE(如果表不存在):

def down
  connection.execute('drop table if exists questionnaires')
end