【问题标题】:mysql result is "special character"-insensitivemysql 结果是“特殊字符”-不敏感
【发布时间】:2010-02-18 09:46:48
【问题描述】:

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

例子:

ALTER TABLE name ADD UNIQUE(name)

错误:

Duplicate entry 'Adé' for key 'name_UNIQUE'

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

Ade, Adé

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

谢谢,

鲍勃

【问题讨论】:

  • +1 好问题,欢迎来到 SO

标签: mysql utf-8 special-characters


【解决方案1】:

您需要将列(或整个表或数据库 - 我认为连接范围不适用于唯一约束)上的 collation 设置为尊重“e”和“é”之间差异的一个”。请参阅here,了解不同排序规则设置可能产生的效果示例。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2015-02-16
    • 2015-01-28
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多