Mysql 5.7.13 innodb 唯一列 varchar(500)
Mysql 5.7.13 innodb unique column varchar(500)
我需要在 Mysql 5.7.13 数据库的 table 的 varchar(500)
列上维护唯一索引。
字符集设置为 UTF8,据我所知,字符数限制为 255,因为我使用的是 innodb 引擎。
我也知道存在应该将维度扩展到 3072 字节的选项 innodb_large_prefix
。我试图配置我的数据库以支持此功能,但它不起作用。我试图插入两个相同的 500 个字符长的行,但最后一个字符不同,但我得到了一个唯一性约束错误,因为正如我所假设的那样,唯一性检查是在前 255 个字符上执行的。
我错过了什么吗?我是否误解了此选项的用途?
P.S 我按照 mysql 文档中的指示启用了 innodb_file_format = Barracuda
。
感谢您的帮助。
西蒙
我解决了我的问题。
事实证明,innodb 引擎配置良好。
问题是我在启用 innodb_large_prefix
选项之前创建了 table,在 varchar(500)
.
上设置了唯一索引
在 varchar(500)
字段上删除并重新创建索引后,唯一约束开始按预期工作。
我需要在 Mysql 5.7.13 数据库的 table 的 varchar(500)
列上维护唯一索引。
字符集设置为 UTF8,据我所知,字符数限制为 255,因为我使用的是 innodb 引擎。
我也知道存在应该将维度扩展到 3072 字节的选项 innodb_large_prefix
。我试图配置我的数据库以支持此功能,但它不起作用。我试图插入两个相同的 500 个字符长的行,但最后一个字符不同,但我得到了一个唯一性约束错误,因为正如我所假设的那样,唯一性检查是在前 255 个字符上执行的。
我错过了什么吗?我是否误解了此选项的用途?
P.S 我按照 mysql 文档中的指示启用了 innodb_file_format = Barracuda
。
感谢您的帮助。 西蒙
我解决了我的问题。
事实证明,innodb 引擎配置良好。
问题是我在启用 innodb_large_prefix
选项之前创建了 table,在 varchar(500)
.
在 varchar(500)
字段上删除并重新创建索引后,唯一约束开始按预期工作。