mysql 结果是“特殊字符”不敏感

Bob*_*b S 6 mysql utf-8 special-characters

似乎当我更改一个 mysql 表(在 utf-8 表/列上)时,它返回一个重复的条目错误。

例子:

ALTER TABLE name ADD UNIQUE(name)
Run Code Online (Sandbox Code Playgroud)

错误:

Duplicate entry 'Adé' for key 'name_UNIQUE'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我的数据库中的行

Ade, Adé
Run Code Online (Sandbox Code Playgroud)

是否可以使用特殊字符更改唯一的表?

谢谢,

鲍勃

hob*_*bbs 5

您需要将列(或整个表或数据库——我认为连接范围不适用于唯一约束)上的排序规则设置为尊重“e”和“é”之间差异的排序规则。有关不同排序规则设置可能具有的效果的示例,请参见此处

假设你的字符集是utf8,你可以用来避免在你的唯一约束上得到误报的最安全的排序规则是utf8_bin,其中两个字符串永远不会比较相等,除非它们是相同的字符串。但是,您需要小心诸如 unicode 规范化之类的事情,否则您最终可能会得到两个具有相同字符序列的键,采用不同的规范化形式,这使得它们不相等。只是有一点需要注意。