试图启动并运行一个rails应用程序。我从同事作为 schema.rb 给出的下表定义中收到此错误。
ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect table definition; there can be only one auto column and it must be defined as a key
表定义:
create_table "wv latest", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
t.integer "id", null: false, auto_increment: true
t.string "cid", limit: 10
t.integer "visit_id"
t.string "cfname", limit: 20
t.string "clname", limit: 25
end
当我删除时
auto_increment: true
错误消失了。为什么会发生这种情况,为什么架构在我的设置中不起作用?
错误消息告诉您只有列可以自动递增,并且此列也必须是主键。 因此,请尝试将id
列设为主键:
create_table "wv latest", id: false, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
t.integer "id", null: false, auto_increment: true, primary_key: true
t.string "cid", limit: 10
t.integer "visit_id"
t.string "cfname", limit: 20
t.string "clname", limit: 25
end