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