Mysql 5.7.13 innodb 唯一列 varchar(500)

标签 mysql innodb unique-constraint unique-index

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

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

我错过了什么吗?我是否误解了此选项的目的?

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

感谢您的帮助。 西蒙娜

最佳答案

我解决了我的问题。

事实证明,innodb引擎配置得很好。 问题是我在启用 innodb_large_prefix 选项之前创建了表,并在 varchar(500) 上设置了唯一索引。

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

关于Mysql 5.7.13 innodb 唯一列 varchar(500),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311323/

相关文章:

mysql - 查询 MySQL InnoDB 以查找记录是否在其缓冲池中

mysql - 合并两个具有唯一值的大表

swift - 如何防止对多关系 NSManagedObject 在覆盖合并时与 CoreData 中的 Swift 重复?

Mysql 如何使用工作表选项以 csv 格式输出文件?

python - sqlalchemy 截断标签

MySQL触发器语法错误

mysql - 我可以在一个数据库中使用 InnoDB 和 MyISAM 表吗?

sql-server - 在 Microsoft SQL Server 中使用复合键

php - 选择字段时不会加载关联

php - 如何确保在检查时该值仅保存到表中一次?