Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql utf8mb4_unicode_ci причинява уникален сблъсък на ключове

Пропускате идеята за CHARACTER SET и COLLATION . CHARACTER SET е колекция от различни герои. A COLLATION казва дали да третираме знаците като равни - помислете за A и a -- различни знаци, но третирани за ORDER BY и WHERE = и т.н. като едни и същи.

mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci  |
+-----------------------------------+
|                                 1 |
+-----------------------------------+

Така че в utf8_unicode_ci (или utf8mb4_unicode_ci) тези два знака се считат за „равни“.

„Равно“ е тестът за UNIQUE ключове.

Задайте COLLATION за колоната към всичко, което има смисъл за вас.

  • utf8mb4_unicode_ci за добри сравнения в „реалния живот“, очевидно включително и това. K=k=Ķ=ķ
  • utf8mb4_unicode_ci за по-простомислещи сравнения. По-специално няма комбинации от 2 знака, които да съответстват на 1-символни кодировки. Сгъване на корпуса и премахване на акцента се случва. K=k=Ķ=ķ
  • utf8mb4_bin сляпо проверява битовете. Без сгъване и т.н. K k Ķ ķ всички са неравни.

utf8mb4_latvian_ci е малко по-различно:K=k, но не е равно на Ķ=ķ . Има и други специализирани съпоставяния за други езици (предимно западноевропейски).

Вашият се нарича "ПЪЛНА ШИРИНА ЛАТИНСКА ГЛАВНА БУКВА K", така че е напълно разумно да се сравнява с латинската K .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате ОСНОВНАТА mysql база данни в InnoDB от MyIsam

  2. грешка в mysql модула за изгледи на drupal

  3. Как да изберете един ред от 100 милиона x

  4. Напишете DataFrame в mysql таблица с помощта на pySpark

  5. MySQL:Запитване за Unicode обекти