5

MySQL 在文本列上的 UNI 键似乎只查看前 255 个字符来测试唯一性。如果我有两个以相同的 255 个字符开头的字符串,则它们不能都添加到此表中。

有没有办法克服这个问题?

我键入此字段的原因是为了确保无论查询如何(这些不在我的控制之下)的唯一性,而不是为了性能。

4

1 回答 1

3

对于更高版本的 MySQL 4.1.2 / 1000 字节(InnoDB 为 767),您不能在 MySQL 中索引长度超过255 个符号的文本字段- 而且您无法在本机上克服这一点。

最简单的解决方案是评估 md5 哈希并将其存储在另一列中,然后通过它创建唯一索引并创建一个触发器 before insert&before update它将自动为您插入 md5。如果您正在运行 MySQL 服务器 4.x - 那么您需要自己处理(因为没有可用的触发器)

于 2013-09-18T12:52:27.703 回答