2011-07-17 40 views
1

我目前有一個數據庫,大多數表和字段存儲爲latin1_swedish_ci。轉換MySQL數據庫以支持多種語言

我的問題是:

  1. 我應該使用utf8_unicode_ci的表和他們的田地?
  2. 表格與字段的排序規則有什麼區別?
  3. 我可以批量更改所有字段/表爲utf8_unicode_ci? (如果這是正確的整理)
  4. 可以在字段/表中發生任何數據丟失?

我想使用utf8的原因是因爲我需要在數據庫中存儲中文和/或俄文字符。

+2

你永遠不需要拿出一個使用UTF-8的理由。 –

回答

2
  1. 我會爲它付出。在使用多種語言時,不會使用utf8的原因很少。
  2. 如果未在單個列定義中指定列字符集和歸類,則表字符集和歸類將用作列定義的缺省值。
  3. 如果您在字段中沒有單獨的排序規則/字符集,則可以編寫一個簡單的腳本,循環遍歷所有表併發出ALTER TABLE tablename CONVERT TO CHARSET utf8;。如果您的字段具有自定義字符集/歸類,則必須發出MODIFY COLUMN聲明。轉換後,您可以輕鬆識別查詢information_schema.columns表的人。
  4. 是的,如果數據不能用utf8表示(根據目前的排序規則,這不太可能),數據可能會中斷。另外,如果您將utf8文本存儲在實際上不是utf8的列中,那麼轉換這些字段會導致類似於utf8雙重編碼的操作,這對於清理來說是相當不方便的。如果你知道某個列被錯誤地用於講述utf8,你可以將它轉換爲bin &然後轉換爲utf8以防止轉換/雙重編碼。
+0

謝謝,我認爲這是一件好事。 –