mysql 字符集 utf 8 排序规则(dup 键)无法正常工作
mysql character set utf 8 collation (dup key) not working properly
我的数据库表字符集和排序规则分别设置为 utf-8
和 utf8_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=Ş=ş=Š=Š=š=š
,它们都会不同。特别注意。 s
和 S
在 utf8_bin 中是不同的。
我的数据库表字符集和排序规则分别设置为 utf-8
和 utf8_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=Ş=ş=Š=Š=š=š
,它们都会不同。特别注意。 s
和 S
在 utf8_bin 中是不同的。