【问题标题】:MySQL treats two different strings same [duplicate]MySQL将两个不同的字符串视为相同[重复]
【发布时间】:2019-04-29 12:08:33
【问题描述】:

当两个不同的字符串 jardinièrejardinière 插入到启用了 UNIQUE KEY 的列(名为 word)中时,MySQL 在 INSERT QUERY 上引发错误。

错误:#1062 - 关键字“word”的重复条目“jardinière”

我还在 INSERT Query 之前添加了以下行(在 PHP 文件中)

mysqli_set_charset($con, "utf8");

我该如何解决这个错误?

【问题讨论】:

  • 表格/列的排序规则和字符集是什么?
  • @Qirel 你刚刚打败了我。
  • 只有 utf8_bin 排序规则会认为它们是不同的,因为它们在语义上是同一个词。
  • @Qirel 整理latin1_swedish_ci
  • @AlexK。有点打不过我,但你需要它是utf8_bin而不是latin1_swedish_ci

标签: php mysql


【解决方案1】:

表格(特定列)的排序规则需要设置为utf8_bin,以便将两个字符彼此分开。

运行以下查询以更新字符集和排序规则(如果您只需要该列,可以将其设置为 utf8_bin)。

ALTER TABLE myTable
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;

请记住,与latin_*utf8_XXX_ci 不同,utf8_bin 在比较时区分大小写

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多