我有一个应用程序在过去几年中收集了大量数据,这些数据存储在许多 mysql 表中;然而所有的表都设置为
Encoding cp1252 West European (latin1)
Collation: latin1_swedish_ci
有特殊字符无法正常显示;我想更改为
Encoding: UTF-8 Unicode (utf8mb4)
Collation: utf8mb4_general_ci
我知道如何更改表,但是,我确实有许多包含约一百万行数据的表,更改所有表的编码有什么危险?
除了备份所有内容之外,我还能做些什么来最大程度地降低风险吗?
最佳答案
如果您没有任何字符列作为外键,则转换是安全的,因为第一个字符列中的所有字符都存在于第二个字符列中,但使用 utf8mb4_general_ci
您可能会更改顺序按字符列对行进行排序时。如果这对您来说是个问题,请尝试改用 utf8mb4_unicode_ci
。
如果您有外键,则应禁用 foreign_key_checks
,并且仅在转换所有表后才将其重新启用。
此外,alter table
可能会锁定表并创建一个副本,因此,如果您在生产服务器上执行此操作,请做好停机准备。
关于mysql - 更改 mysql 编码的危险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36702672/