MySQL在文本列上的UNI键似乎只查看前255个字符来测试唯一性。如果我有两个以相同的255个字符开头的字符串,则不能将它们都添加到该表中。
有没有办法克服这个问题?
我键入此字段的原因是为了确保唯一性而不管查询(不受我的控制),而不是性能。
答案 0 :(得分:2)
您无法为密钥长度超过255 symbols before MySQL 4.1.2 / 1000 bytes (767 for InnoDB) for higher versions的MySQL中的文本字段编制索引 - 而且您无法原生地克服这一点。
最简单的解决方案是评估md5哈希并将其存储在另一列中,然后通过它创建唯一索引并创建trigger before insert
& before update
将自动为您插入md5。如果您正在运行MySQL服务器4.x - 那么您需要自己处理(因为没有可用的触发器)