首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:使用迁移添加唯一索引引发Mysql2 2::Error: BLOB/TEXT

Rails:使用迁移添加唯一索引引发Mysql2 2::Error: BLOB/TEXT
EN

Stack Overflow用户
提问于 2016-02-03 19:18:11
回答 1查看 385关注 0票数 1

我有这样的模型:

ofert.rb

代码语言:javascript
复制
class Ofert < ActiveRecord::Base
belongs_to :user
validates_uniqueness_of :reference, scope: :user_id
end

user.rb

代码语言:javascript
复制
class User < ActiveRecord::Base
    has_many :oferts
end

我想验证由reference限定的属性user_id的唯一性,我的意思是,同一个用户不能拥有具有相同引用的产品,但是如果引用不是同一个用户,则可以重复引用。

如您所见,在validates_uniqueness_of模型中有一个Ofert语句,然后我添加了这个迁移:

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

然而,当我运行迁移时,我会得到以下错误:

代码语言:javascript
复制
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`)

这里怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-03 20:07:04

因为:reference是一个文本或blob列,所以必须为索引指定一个长度:

代码语言:javascript
复制
add_index :oferts, [:reference, :user_id], unique: true, length: 10

最大长度限制取决于您正在使用的数据库引擎,因此请再次检查MySQL索引文档

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35185768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档