rails 迁移生成随机表。这是从哪里来的?

rails migration generating random tables. Where is this coming from?

当我 运行 rails db:migrate 没有新迁移时,它似乎添加了两个新表:questionsquestions_1

在我的架构文件中,我看到:

  create_table "questions", id: false, force: :cascade do |t|
    t.integer "id"
    t.text "text"
    t.boolean "active"
    t.integer "organization_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.bigint "account_id"
    t.bigint "team_id"
  end

  create_table "questions_1", id: false, force: :cascade do |t|
    t.integer "id"
    t.text "text"
    t.boolean "active"
    t.integer "organization_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.bigint "account_id"
    t.bigint "team_id"
  end

我没有对这些表进行任何迁移。我猜这是某种约定。我在哪里寻找解决这个问题?所有最近的更改都在 app/ 目录中,我所做的迁移已回滚然后删除。然而,当我 运行 rails db:migrate 我总是得到这些新表。

有什么想法吗?

Rails 不会使用迁移中指定的名称以外的任何名称创建 table。如果 table 已经存在,那么它会抛出一个错误。

我相信有人 运行 在您的数据库上创建了第二个 table 迁移,然后删除了该迁移。当 rails 创建您的 schema.rb 文件时,它使用您的数据库而不是任何迁移,这意味着该文件反映了您的实际数据库状态,而不是您的迁移建议的情况。

如果您确定不想要第二个 table 并且其中没有数据,那么您可以写一个新的迁移来删除这个 table,运行 它,然后删除它。这会将 return 您的数据库状态变为迁移建议的状态。然后您可以 运行 rake db:schema:dump 更新您的架构。