【发布时间】:2012-07-30 10:02:47
【问题描述】:
在我们的 Web 应用程序中,我们的表格在 id 字段中保存了一个“GUID”ID。 通过调查用于创建数据库的实际 SQL 代码,我们看到我们的 ID 实际上并没有作为主键延迟。似乎没有强制执行唯一性,也没有创建索引。
这感觉很糟糕,所以我们想解决这个问题。我们的目标只是将我们的 ID 字段设置为“主键”
这是我们的 schema.rb 的示例
create_table "projects", :id => false, :force => true do |t|
t.string "id"
t.string "name"
t.string "objective"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "client_account_id"
t.string "default_project_name"
t.boolean "quota_exceeded", :default => false, :null => false
end
在开发中,我们使用 SQLite3 数据库,而在生产中,我们依赖 MySQL。
我知道不可能在现有的 SQLite3 DB 上添加这样的约束,但我准备删除它并在需要时重新创建它。 如果可能,我想避免删除 MySQL DB,但如果确实需要,我可以备份它并将数据插入新模式。
最好的方法是什么? (Rails V3.2.6)
【问题讨论】:
标签: mysql ruby-on-rails sqlite primary-key