Помогите разобраться со сменой кодировки в БД?

Приветствую.

Надо вставлять смайлики и поэтому надо сменить кодировку в БД, но не все так отрадно. Меняется просто:
ALTER TABLE
    table_name
    CONVERT TO CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

При попытке смены некоторых таблиц через phpMyAdmim появляется ошибка: «Указан слишком длинный ключ. Максимальная длина ключа составляет 1000 байт». Создал тестовый сайт на modhost и там из коробки идет нужная кодировка. Решил сравнить мои таблицы и таблицы на modhost. В моих таблицах, где появляется ошибка в некоторых полях установлен VARCHAR == 255, а в тех же полях таблиц на modxhost VARCHAR == 191.

Почему 191, а не 249 или какое другое число?
Если я в таблицах с ошибками смены кодировки измению VARCHAR <= 249, все ли будет работать корректно?
Можно ли вообще таким образом менять кодировку при использовании MODX или надо что-то еще сделать?
weranda
20 февраля 2021, 13:17
modx.pro
873
0

Комментарии: 4

Сергей Шлоков
20 февраля 2021, 21:45
0
Почему 191, а не 249 или какое другое число?
Гугл сломался?

При попытке смены некоторых таблиц через phpMyAdmim появляется ошибка
А зачем переводить несколько? Смайлики ведь вставляются в какую-то одну таблицу. Вот в ней и нужно поменять все varchar(255) на varchar(191).
    weranda
    20 февраля 2021, 22:11
    0
    Смайлики ведь вставляются в какую-то одну таблицу.
    А я не знаю логику работы MODX с БД. Может быть так, что данные из одного поля при какой-то операции будут использоваться в другом поле другой таблицы…
      Сергей Шлоков
      21 февраля 2021, 07:06
      0
      Скорее всего разговор про комменты. Никуда они перетекать не будут. Кроме того, проблема только с полями varchar, для которых созданы индексы. Т.е. можно даже не все поля varchar таблицы поправить, а только индексируемые.
    Иван Бочкарев
    20 февраля 2021, 22:48
    0
    Можно сделать так: Как изменить кодировку для всех таблиц в MySQL

    В 3й версии изменили с 191 на 255 PR #15398
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4