mysql utf8拉丁语,重复键输入失败

时间:2012-07-28 15:44:45

标签: mysql utf-8 character-encoding

我刚收到一个SQL插入脚本,但它在重复的键条目上失败了:

我想插入:

1)蒙大拿

2)蒙大拿

我的桌子都是utf8_spanish2_ci,

任何人都可以解释为什么会这样吗?

3 个答案:

答案 0 :(得分:1)

utf8_spanish2_ci collation确实不仅不区分大小写,而且还有部分重音不敏感,因此 ñ = n(作为Joni Salonen指出,这是不正确的!)但是á = a

据我所知,除了utf8_bin之外,没有的排序规则带有此“功能”。

你能做什么:

  • 对表格使用二进制排序规则(但附带other problems
  • 对特定列使用二进制排序规则(可能是您最好的选择)
  • 使用其他列作为键列 - 您确定该列首先需要是唯一键吗?如果这是一个主键,数字自动增量不会更适合吗?

答案 1 :(得分:0)

这很可能是由于整理考虑Montaña和Montana相同。

(排序规则确定字符串比较的结果。)

答案 2 :(得分:0)

您确定此特定列具有排序utf8_spanish2_ci吗?

根据这种排序规则,Montana和Montaña这两个词并不相同,因为您可以使用此SQL进行验证:

mysql> select 'Montana' = 'Montaña' collate utf8_spanish2_ci as eq;
+----+
| eq |
+----+
|  0 |
+----+

是否有可能以某种方式将排序规则更改为utf8_general_ci?在这个校对中,n和ñ是相等的。