如标题中所述,我在我的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,但它没有说出什么是错的 - 只是有错误。 (此外,该表尚不存在;我已经检查过了。)
如何获得更多数据来调试?
答案 0 :(得分:0)
错误消息是红鲱鱼。问题不在于创建表格;问题在于迁移本身的格式。我在迁移中定义了一些模型,这些模型使用了#up
方法中创建的表。当rake试图开始迁移时,它会查找这些行的表,并在找不到它们时翻转。 create
语句恰好是错误后运行的第一个 命令。