Работа с SET NAMES utf8mb4 с таблицами utf8

В большой системе на основе Mysql 5.5.57 Php 5.6.37

В настоящее время вся система работает в utf8, включая SET NAMES utf8 в начале каждого соединения с БД.

Мне нужно поддерживать смайлики в одной из таблиц, поэтому мне нужно переключиться на utf8mb4. Я не хочу переключать другие таблицы.

Мой вопрос — если я изменю на SET NAMES utf8mb4 для всех соединений (utf8 и utf8mb4) и переключу конкретную таблицу только на utf8mb4 (и только записываю данные mb4 в эту таблицу). Будет ли работать остальная часть системы, как раньше?

Может ли быть какая-либо проблема от работы с SET NAMES utf8mb4 в таблицах / данных / соединениях utf8?

0

Решение

Я думаю, что не должно быть никаких проблем с использованием SET NAMES utf8mb4 для всех соединений.

(utf8mb3 это синоним utf8 в MySQL; Я буду использовать первый для ясности.)

utf8mb3 это подмножество utf8mb4так что ваш клиент байтов будет счастлив в любом случае (за исключением Emoji, который нуждается в utf8mb4). Когда байты попадают (или приходят) в столбец, который объявлен только, будет проверка, чтобы убедиться, что вы не храните эмодзи или определенные китайские иероглифы, но в остальном это проходит с минимальной суетой.

Я предлагаю

 ALTER TABLE ... CONVERT TO utf8mb4

как «правильный» способ преобразовать таблицу. Тем не менее, он преобразует все varchar / текстовые столбцы. это может Будь плохим…

если ты JOIN преобразованная таблица в не преобразованную таблицу, тогда вы будете пытаться сравнить строку utf8mb3 со строкой utf8mb4. MySQL поднимает руки и конвертирует все строки из одной в другую. Это не INDEX будет полезно.

Итак … Обязательно, по крайней мере, будьте последовательны в любом столбцы которые участвуют в JOINs,

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector