我试图通过成员,日期和问题在MySQL中添加约束,以便同一个用户每天不能多次问同一个问题。
alter table questions add UNIQUE INDEX three_UNIQUE ( member_id , question , date );
但由于问题字段是长文本,我收到此错误:
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
以任何方式解决这个问题?
谢谢!
答案 0 :(得分:3)
您可以散列问题,并将散列值存储为字段。由于哈希值会小得多,因此您可以在其上添加约束。很有可能,没有两个独特的问题会散列到相同的值。
注意:与问题只有细微差别的情况相比,你会遇到同样的问题。
答案 1 :(得分:2)
在用户输入的长文本字段中指定唯一键约束通常没有多大意义。用户仍然可以不止一次地询问同一个问题,只需添加一个空格或进行其他一些小的改动。
如果您打算阻止意外重新发布,请使用带有GUID或类似唯一标识符的隐藏字段。
答案 2 :(得分:1)
为哈希添加新列(md5或其他)。当问到这个问题时,也要填充哈希列..然后在你的索引而不是问题字段中使用它。