Преобразование таблиц и полей utf8_general_ci в utf8_unicode_ci - PullRequest
7 голосов
/ 19 октября 2010

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

Это вызывает проблемы при объединении таблиц с различными параметрами сортировки.Теперь я планирую изменить параметры сортировки и сделать их такими же: utf8_unicode_ci.Я буду выполнять эти два SQL-запроса во всех моих таблицах.

ALTER TABLE  `table1` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE  `table1` CHANGE  `Action`  `Action` VARCHAR( 250 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;

Мой вопрос: не нарушает ли выполнение этих двух SQL-запросов какие-либо значения полей, особенно те, которые содержат символы с акцентом?Или эти два запроса безопасны?

Ждем от вас ответа.

Спасибо за ваши ответы!

Ответы [ 2 ]

5 голосов
/ 19 октября 2010

Пожалуйста, обратитесь к MySQL документ, который говорит об изменении набора символов и сопоставления

http://dev.mysql.com/doc/refman/5.1/en/charset-column.html

Это говорит о том, что - «Если вы используете ALTER TABLE для преобразования столбца из одного набора символов в другой, MySQL пытается отобразить значения данных, но если наборы символов несовместимы, может произойти потеря данных».

- Приветствия

5 голосов
/ 19 октября 2010

Сортировка влияет только на сравнение строк в поле, а не на то, как они хранятся.Пока вы остаетесь с кодировкой utf8, вы в безопасности.

...