mysql 字符集 utf 8 排序规则(dup 键)无法正常工作

mysql character set utf 8 collation (dup key) not working properly

我的数据库表字符集和排序规则分别设置为 utf-8utf8_general_ci。我在 varchar 列中插入了一条值为 'säî kîråñ' 的记录。我对此有一个唯一的列约束。当我尝试插入 'sai kiran' 时,它会给出重复的条目,指向 'säî kîråñ' 的旧插入行。

如您所见,两个字符串中的字符在 utf8 字符集中完全不同,无法理解为什么显示错误 'duplicate entry'。

我尝试将排序规则更改为 utf8_unicode_ci 但没有用。我尝试直接插入 phpmyadmin 以避免 prog lang 编码问题,问题仍然存在。

utf8_general_ci的情况下,我认为只有'a' and 'A'会被同等对待,但从here我发现甚至'a' and 'ä'也会被同等对待。所以 utf8_bin 是区别对待的最终解决方案。学习还是不错的。

由于缺少 utf8_..._ci_as 排序规则,您可能应该(至少)将该列的排序规则更改为 utf8_bin。然后,而不是所有这些都相等 S=s=Ş=ş=Š=Š=š=š,它们都会不同。特别注意。 sS 在 utf8_bin 中是不同的。