簡體   English   中英

Rails:在遷移中添加唯一索引會拋出Mysql2 :: Error:BLOB / TEXT

[英]Rails: Adding unique index with migration throws Mysql2::Error: BLOB/TEXT

我有這個模型:

ofert.rb

class Ofert < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :reference, scope: :user_id
end

user.rb

class User < ActiveRecord::Base
    has_many :oferts
end

我想驗證由user_id的屬性reference的唯一性,我的意思是,同一用戶不能擁有具有相同引用的產品,但是如果引用不是同一用戶,則可以重復該引用。

如您所見,在Ofert模型中有一個validates_uniqueness_of語句,然后我添加了此遷移:

add_index(:oferts, [:reference, :user_id], unique: true)

但是,當我運行遷移時,出現以下錯誤:

Mysql2::Error: BLOB/TEXT column 'reference' used in key specification without a key length: CREATE UNIQUE INDEX `index_oferts_on_reference_and_user_id`  ON `oferts` (`reference`, `user_id`)

怎么了

由於:reference是text或blob列,因此必須指定索引的長度:

add_index :oferts, [:reference, :user_id], unique: true, length: 10

有最大長度限制,取決於您使用的數據庫引擎,因此請仔細檢查MySQL索引文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM