Rails迁移无法在Postgres中创建表

时间:2014-12-10 14:56:48

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

如标题中所述,我在我的Rails应用程序中进行了迁移,该应用程序创建了一个表。我们有一个Postgres数据库。当我在开发中运行迁移时,它失败了:

ActiveRecord::StatementInvalid: PG::Error: ERROR:  current transaction is aborted, commands ignored until end of transaction block
: CREATE TABLE "feedback_questions" ("id" serial primary key, "survey_id" integer, "question_text" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 

迁移很长,但创建表是第一件事。它看起来像这样:

def up
  create_table :feedback_questions do |t|
    t.integer :survey_id
    t.text :question_text

    t.timestamps
  end
  # ...
end

在我看来,这不是迁移的问题,而是数据库(错误来自PG)。错误消息类似于this question,但它没有说出什么是错的 - 只是有错误。 (此外,该表尚不存在;我已经检查过了。)

如何获得更多数据来调试?

1 个答案:

答案 0 :(得分:0)

错误消息是红鲱鱼。问题不在于创建表格;问题在于迁移本身的格式。我在迁移中定义了一些模型,这些模型使用了#up方法中创建的表。当rake试图开始迁移时,它会查找这些行的表,并在找不到它们时翻转。 create语句恰好是错误后运行的第一个 命令。