2011-09-08 35 views
2

我在我的票务系统中有一个表格,有15,000条记录,每条记录都包含一个已转换为邮件以添加到票证中的电子邮件。更改列整理 - 安全吗?

我们目前的问题是整理 - 当我在使用latin1_swedish_ci的系统上工作时。但是,我们在系统中使用了几种欧洲语言,因此我们需要能够正确存储非ASCII字符。

我无法得到这与latin1_swedish_ci排序规则一起工作,但我发现在我的系统测试版本中,将排序规则切换到utf8_bin可以解决问题。

所以我需要知道是否可以安全地在实时系统上对我的表/列进行此更改。这会花费很长时间(PHPMyAdmin在您尝试使其工作非常困难时非常糟糕),还是会损坏任何现有数据?

+0

问题不在于数据库本身;问题是*票务系统*是否可以处理UTF-8数据。 –

回答

6

当第一个字符集中的所有字符都可以在第二个字符集中表示时,从一个字符集转换为另一个字符集是安全的。

latin1到utf8的情况是这样的:它是安全的。

但是你必须确保应用程序本身可以处理utf8数据。

在utf8_bin:本UTF8部分是字符集(字符如何编码)和部分是归类。不要使用bin,它会使得所有内容区分大小写,这可能不是您所期望的。改为尝试utf8_unicode_ci。 (见http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-sets.html

+0

太好了,当我执行alter column操作时,它会对15,000行的每一行执行一些转换吗?我担心这一点,因为我甚至无法从PHPMyAdmin转储这些数据而没有响应。 –

+0

是的,它会转换数据。 (像往常一样,在这之前做一个备份,以防万一。) – arnaud576875

+0

也尝试'ALTER TABLE foo CONVERT TO CHARACTER SET ...'来一次转换所有列。 – arnaud576875