Kir*_*nik 4 postgresql uuid ruby-on-rails database-migration
我使用 uuid 而不是 bigint 作为主键。和下一次迁移
class CreateProjects < ActiveRecord::Migration[6.0]
def change
create_table :projects, id: :uuid do |t|
t.string :title
t.references :user, null: false, foreign_key: true
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:
PG::DatatypeMismatch: ERROR: foreign key constraint "fk_rails_b872a6760a" cannot be implemented
DETAIL: Key columns "user_id" and "id" are of incompatible types: bigint and uuid.
Run Code Online (Sandbox Code Playgroud)
Sii*_*ser 10
t.references默认情况下假设另一个表有一个bigint主键,并使外键字段也是一个bigint. 一旦添加了外键,就会发现这种差异并且迁移失败。
使用type: :uuid指定字段是否应该确实是uuid。
t.references :user, null: false, foreign_key: true, type: :uuid
Run Code Online (Sandbox Code Playgroud)
我自己在我的项目中通过记住每个引用/属于需要有 4 个选项来跟踪它。null、foreign_key、type和index。这迫使我考虑 4 个选项中的每一个,即使我选择将它们的值保留为默认值。
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |