【问题标题】:Mysql 5.7.13 innodb unique column varchar(500)Mysql 5.7.13 innodb 唯一列 varchar(500)
【发布时间】:2016-07-11 15:57:56
【问题描述】:

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

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

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

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

感谢您的帮助。 西蒙娜

【问题讨论】:

  • 您的表格的行格式是什么?它在文档中说它仅适用于动态或压缩的行格式,所以可能就是这样。
  • @rlanvin 我首先将行格式更改为“动态”,然后将COMPACT 更改为,但结果是一样的。唯一约束是在前 255 个字符上计算的。

标签: mysql innodb unique-constraint unique-index


【解决方案1】:

我解决了我的问题。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多