午夜咖啡午夜咖啡

jolestar 的文章与笔记。

Post

utf8mb4 最好从第一天就设成默认

2013-05-14 21:46:49Post

字符集这类基础设置一旦拖到中后期再补,迁移成本通常会远高于一开始就设对。

这类坑我又栽了一次,所以顺手把最小处理清单记下来。对一套已经上线的系统来说,字符集问题一旦拖到后面再补,代价通常会比一开始设对高很多。

如果你的库后面迟早要支持 emoji、多语言或者更复杂的字符,utf8mb4 最好从第一天就作为默认配置。

我当时的处理步骤大致是:

  1. my.cnf 里把 character-set-server 改成 utf8mb4
  2. 对已有表执行 alter table ... convert to character set utf8mb4 collate utf8mb4_bin
  3. 升级 Java 的 mysql-driver

第三步也别漏。驱动版本太老的话,数据库即使已经切到 utf8mb4,应用侧还是可能继续掉坑。我当时确认可用的是 5.1.25,理论上 5.1.14 之后应该就可以,但这一点我没有再往下细抠。

所以这件事最实际的结论还是:如果是新建库,先把字符集想清楚,不要等业务跑起来之后再返工。