1

SQL挿入スクリプトを受け取ったばかりですが、キーエントリが重複していると失敗します。

私は挿入しようとしています:

1)モンタナ

2)モンタナ

私のテーブルはすべてutf8_spanish2_ciです。

なぜこれが起こっているのか誰かが説明できますか?

4

3 に答える 3

1

utf8_spanish2_ci 照合では、大文字と小文字が区別されないだけでなく、部分的にアクセントも区別されないため、ñ= n(ジョニサロネンが指摘しているように、これは正しくありません!)しかしá= a

私の知る限り、この「機能」に付属していないutf8_bin照合はありません。

あなたができること:

  • テーブルにバイナリ照合を使用します(ただし、これには他の問題が伴います)
  • 特定の列にバイナリ照合を使用する(おそらく最善の策)
  • キー列として別の列を使用します-そもそも列が一意のキーである必要がありますか?これが主キーの場合、数値の自動インクリメントの方がはるかに適しているのではないでしょうか。
于 2012-07-28T15:51:54.533 に答える
0

これは、モンタナとモンタナが同一であると見なしている照合が原因である可能性が最も高いです。

(照合により、文字列の比較の結果が決まります。)

于 2012-07-28T15:47:50.697 に答える
0

この特定の列に照合があることを確認しますutf8_spanish2_ciか?

このSQLで確認できるように、この照合によれば、MontanaとMontañaという単語は等しくありません。

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

どういうわけか照合がutf8_general_ciに変更される可能性はありますか?この照合では、nとñは等しくなります。

于 2012-07-29T10:29:32.497 に答える