1

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

我正在尝试插入:

1)蒙大拿

2)蒙大拿州

我的表都是utf8_spanish2_ci,

谁能解释为什么会这样?

4

3 回答 3

1

utf8_spanish2_ci 排序规则确实不仅不区分大小写,而且部分不区分重音,所以ñ= n(正如 Joni Salonen 指出的那样,这是不正确的!)但是á= a

据我所知,除了utf8_bin.

你可以做什么:

  • 对表使用二进制排序规则(但这会带来其他问题
  • 对特定列使用二进制排序规则(可能是您最好的选择)
  • 使用不同的列作为键列-您确定该列首先需要是唯一键吗?如果这是用于主键,那么数字自动增量不是更适合吗?
于 2012-07-28T15:51:54.533 回答
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 和 ñ 是相等的。

于 2012-07-29T10:29:32.497 回答
0

这很可能是由于排序规则认为蒙大拿州和蒙大拿州是相同的。

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

于 2012-07-28T15:47:50.697 回答