Путаница с utf8_general_ci & amp; utf8_unicode_ci

Mysql сервер сопоставления utf8_general_ci в my.cnf

Я использую сортировку utf8_general_ci для базы данных, теперь я создал несколько таблиц с сортировкой utf8_unicode_ci в
та же база данных.

Теперь я хотел бы использовать utf8_unicode_ci для сервера / базы данных / таблиц / полей. Для того, чтобы сделать это сначала мне нужно изменить параметры сортировки для сервера на utf8_unicode_ci
затем для базы данных, таблиц и полей.

У меня вопрос, у меня уже есть данные в таблицах, хранящихся с использованием utf8_general_ci, могу ли я просто сохранить, как есть, ничего не делая с данными или мне нужно сделать какой-либо преобразование.

Другое дело, как вы можете видеть, что сопоставление на уровне сервера — utf8_general_ci, но на уровне таблиц и полей — utf8_unicode_ci, так что с моей текущей настройкой, когда я сохраняю и извлекаю данные из этих таблиц, что использует сопоставление mysql?

Спасибо.

2

Решение

Сортировка на уровне сервера ничего не значит.
Кодировка уровня сервера и базы данных (и сопоставление) служат простыми значениями по умолчанию для создания таблицы (и базы данных).

  • Скажем, если вы не указали параметры сортировки при создании базы данных, она будет создана с использованием параметров сортировки сервера. Но если вы сделаете это — будет использован поставленный, и сопоставление сервера не будет мешать вообще.
  • Если вы не указали параметры сортировки в определении таблицы, таблица будет создана с использованием параметров сортировки базы данных. Но если вы это сделаете — будет использован предоставленный, и ни сервер, ни сопоставление базы данных не повлияет на ваши запросы.

Важна только сортировка на уровне таблицы и поля.

если у меня уже есть данные в таблицах, хранящихся с использованием utf8_general_ci, могу ли я просто сохранить как есть

Да. Вы можете иметь таблицы с любым набором символов в вашей базе данных.

1

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

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

По вопросам рекламы [email protected]