2017-01-03 4 views
0

Пока все таблицы в моей базе данных не переносятся в utf8mb4, существует ли риск продолжения использования соединения utf8?Могу ли я безопасно использовать соединение utf8 с столбцами utf8mb4?

Я думал, что поддерживаю соединение utf8 до тех пор, пока все таблицы не будут перенесены.

Основной вопрос: сколько времени потребуется для внесения изменений на очень большие таблицы (сотни ГБ)?

ответ

0

Пока все данные находятся в 3-байтовом подмножестве utf8, utf8 и utf8mb4 идентичны.

Параметры подключения (включая SET NAMES) определяют кодировку в клиенте . В определении столбца/таблицы указано, что кодировка обрабатывается в столбцах. MySQL будет конвертировать между ними, как вы INSERT или SELECT. Опять же, пока все данные являются подмножеством utf8, возможно преобразование (фактически без операции).

2

Некоторые примеры того, как MySQL выполняет преобразование, если вы пытаетесь вставить фразу:
«Это смайликов кот»

1 - с подключением utf8 в таблице utf8: MySQL обрезает строку из символа 4 байта:
«Это Emoji»

2 - с подключением utf8 в таблице utf8mb4: MySQL заменяет символ 4 байта с "????"
«Этот смайликам ???? является кошкой »

3 - с подключением utf8mb4 в таблице utf8: MySQL заменяет символ 4 байта на«? »
« Этот эмози? кошка »

+0

Хорошие примеры того, что происходит, когда utf8mb4 необходим, но существует несоответствие между соединением и столбцом. –

Смежные вопросы