[英]Rails: Adding unique index with migration throws Mysql2::Error: BLOB/TEXT
我有這個模型:
class Ofert < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :reference, scope: :user_id
end
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.