Mysql 5.7.13 innodb独特列varchar(500)

时间:2016-07-11 15:57:56

标签: mysql innodb unique-constraint unique-index

我需要在Mysql 5.7.13数据库的表的varchar(500)列上维护一个唯一索引。

charset设置为UTF8所以,据我所知,由于我使用的是innodb引擎,因此字符数限制为255。 我也知道存在选项innodb_large_prefix,它应该将维度扩展到3072字节。我尝试配置我的数据库以支持此功能,但它不起作用。我尝试插入两个相同的500个字符的长行,最后一个字符不同,但我得到一个唯一的约束错误,因为我认为,对前255个字符执行唯一性检查。

我错过了什么吗?我误解了这个选项的目的吗?

P.S我按照mysql文档中的指示启用了innodb_file_format = Barracuda

感谢您的帮助。 西蒙

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。

原来,innodb引擎配置正常。 问题是我在启用innodb_large_prefix选项之前创建了表,在varchar(500)上设置了唯一索引。

varchar(500)字段上删除并重新创建索引后,唯一约束开始按预期工作。