将utf8_general_ci表和字段转换为utf8_unicode_ci

时间:2010-10-19 11:22:34

标签: mysql character-encoding collation

几年前我在设计我的应用程序数据库时犯了一个错误,我的表和表字段的排序规则设置是混合的。其中一些是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 个答案:

答案 0 :(得分:5)

整理只会影响字段中字符串的比较方式,而不会影响它们的存储方式。至于你使用utf8编码,你是安全的。

答案 1 :(得分:5)

请参考讨论改变字符集和整理的mysql doc

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

它说 - “如果使用ALTER TABLE将列从一个字符集转换为另一个字符集,MySQL会尝试映射数据值,但如果字符集不兼容,则可能会丢失数据。”

- 干杯