Обновление параметров сортировки столбцов с utf8_general_ci до utf8_bin нарушает индекс - PullRequest
0 голосов
/ 10 апреля 2020

Я заметил, что после обновления параметров сортировки столбцов с utf8_general_ci до utf8_bin следующий запрос:

SELECT *
FROM tbl_table
WHERE updated_column = 'some_value'

возвращает пустой набор результатов (который должен быть не пусто). updated_column имеет неуникальный индекс.

Почему это происходит и как перестроить индекс для соответствия обновлению?

PS MySql установка:

mysql.exe  Ver 15.1 Distrib 10.4.7-MariaDB, for Win64 (AMD64), source revision 9a78a283f4ee7e8ccc4afb1d8a24c662fa4c634b

1 Ответ

0 голосов
/ 11 апреля 2020

utf8_bin - это двоичное сопоставление, которое сравнивает строки только по значениям их кодовой точки Unicode.

utf8_general_ci будет также соответствовать символам, которые являются канонически эквивалентными, но имеют другое значение кодовой точки. Кроме того, сравнения выполняются без учета регистра (ci).

Если ваш updated_column содержит значение «Some_value», поиск для «some_value» с использованием utf8_general_ci будет соответствовать, в то время как использование utf8_bin не будет соответствовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...