rails 迁移生成随机表。这是从哪里来的?
rails migration generating random tables. Where is this coming from?
当我 运行 rails db:migrate
没有新迁移时,它似乎添加了两个新表:questions
和 questions_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
更新您的架构。
当我 运行 rails db:migrate
没有新迁移时,它似乎添加了两个新表:questions
和 questions_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
更新您的架构。