我试图添加一个从四个相关表的外键创建的唯一索引:
add_index :studies,
["user_id", "university_id", "subject_name_id", "subject_type_id"],
:unique => true
数据库对索引名称的限制会导致迁移失败 . 这是错误消息:
表'研究'上的索引名称'index_studies_on_user_id_and_university_id_and_subject_name_id_and_subject_type_id'太长;限制为64个字符
我怎么处理这个?我可以指定不同的索引名称吗?
5 回答
在PostgreSQL中,the default limit is 63 characters . 因为索引名称必须是唯一的,所以有一点约定是很好的 . 我使用(我调整了示例来解释更复杂的结构):
正常指数应该是:
逻辑是:
index
成为idx
奇异表名
没有加入的话
没有
_id
按字母顺序排列
通常这项工作 .
你也可以这样做
如Ruby on Rails API .
您还可以在
create_table
块中更改列定义中的索引名称(例如,您从迁移生成器获取) .为add_index提供
:name
选项,例如:如果在
create_table
块中的references上使用:index
选项,则它采用与add_index
相同的选项哈希作为其值:与上一个答案类似:只需在常规add_index行中使用“name”键: