Почему КОДИРОВКА таблицы установлена в utf8mb4, а ПАРАМЕТРЫ СОРТИРОВКИ - в utf8mb4 unicode 520 ci


Недавно я заметил, что, когда я начинаю новый проект WordPress, параметры сортировки моих таблиц автоматически меняются с utf8_unicode_ci (который я выбираю при создании новой базы данных из phpMyAdmin) на utf8mb4_unicode_520_ci.

Кроме того, я заметил в phpMyAdmin в разделе Общие настройки, что параметры сортировки подключения к серверу по умолчанию имеют значение utf8mb4_unicode_520_ci.

Я запускаю сервер MySQL 5.7.17 и phpMyAdmin 4.6.6 в Ubuntu 17.04.

Мои вопросы таковы следующее:

  1. Почему это происходит?
  2. Если возможно, как мне предотвратить это? Из-за utf8mb4 у меня возникли проблемы при переносе сайтов WP на более старый сервер MySQL, который его не поддерживает.
  3. Является ли пункт 2. целесообразным? Есть ли какие-либо преимущества в использовании кодировки utf8mb4 по сравнению с utf8 и сортировки utf8mb4_unicode_520_ci по сравнению с utf8_unicode_ci?
Author: Томица Кораћ, 2017-04-26

1 answers

В прошлом было только utf8; в будущем utf8mb4 будет набором символов по умолчанию.

В прошлом _general_ci было сопоставлением по умолчанию; затем _unicode_ci (Unicode 4.0) было лучше, затем _unicode_520_ci (Unicode 5.20). В будущем (MySQL 8.0) по умолчанию будет _0900_ci_ai (Юникод 9.0).

Между тем, дорога полна выбоин, вызванных прошлыми ошибками MySQL. А дизайнеры WP едут в большом танке, который не замечает выбоин.

MySQL 5.6 был большим выбоина, которая поглотила многих пользователей WP из-за ограничения в 767 индексов вместе с индексами WP на чрезмерно длинном VARCHAR(255) и возможности использования utf8mb4. Вы уже давно прошли это, имея 5.7.17. (Ваш будущий переход на 8.0 будет менее ухабистым.)

То есть, недавно созданные базы данных/таблицы/столбцы в версии 5.7.7+ не должны испытывать проблемы с 767, но при переносе из более старых версий (5.5.3+) могут возникнуть проблемы, особенно если что-то заставит вас перейти на utf8mb4.

Что что делать? Вероятно, у меня не хватит места, чтобы изложить все варианты. Поэтому предоставьте историю данных, путь обновления (если таковой имеется), текущие настройки, ROW_FORMAT таблиц, CHARACTER SET и COLLATION столбцов, выходные данные SHOW VARIABLES LIKE 'char%';

Где ты должен быть? Для 5.7.7+, utf8mb4 и utf8mb4_unicode_520_ci везде, где это практически возможно. Эта кодировка дает вам смайлики и весь китайский (utf8 не дает). Эта сортировка является наилучшей из доступных, хотя вам может быть трудно заметить, где она имеет значение.

Примечание: первая часть имени параметров сортировки - это единственный набор символов, с которым он работает. То есть utf8_unicode_ci не работает с utf8mb4.

 17
Author: Rick James, 2017-04-29 06:00:51