Измените параметры сортировки столбцов с utf8mb4_general_ci на utf8mb4_bin, чтобы испортить таблицу - PullRequest
0 голосов
/ 21 апреля 2020

По некоторым причинам (требуется чувствительность к акценту) нам нужно изменить параметры сортировки столбца с utf8mb4_general_ci на utf8mb4_bin в базе данных mysql (mysql и mariadb). Поэтому мы просто выполняем этот запрос:

ALTER TABLE table MODIFY column VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

Этот столбец имеет уникальный индекс. И это отлично работает в нескольких средах, но мы не знаем, почему, повреждаем данные в какой-то другой (среда prod, очевидно ...):

Corruption of an index tree: table `db`.`table` index `unique_column`, father ptr page no 640, child page no 683 PHYSICAL RECORD: n_fields 2; compact format; info bits 0

Кто-нибудь знает, почему? Мы не можем воспроизвести, и среда prod - не самое подходящее место для тестирования ... Может быть, проблема с данными, потому что, когда мы снова импортируем дамп этой базы данных, это прекрасно работает, но как найти эту проблему с данными?

Спасибо вы ! (извините за мой плохой английский sh)

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Проблема решена, мы удаляем уникальный индекс, меняем параметры сортировки и воссоздаем индекс. Проблема решена, но мы не понимаем, почему мы должны делать это на нескольких базах данных ...

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

Вы можете использовать CONVERT

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

Но все равно ничего не делать без резервной копии

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