v2.1.7 及之后版本,如果对表和 column 的字符集没有严格要求为 UTF8,也不想修改客户端代码去跳过 UTF8 检查或者手动修改column 的 charset,可以在配置文件中把 treat-old-version-utf8-as-utf8mb4 打开。该配置的作用是自动把 2.1.7 版本之前创建的旧版本的表和 column 的 UTF8 字符集转成 UTF8MB4。这个转换是在 TiDB oad schema 时在内存中将 UTF8 转成 UTF8MB4,不会对实际存储的数据做任何修改。在配置文件中关闭并重启 TiDB 后,以前字符集为 UTF8 的treat-old-version-utf8-as-utf8mb4表和 column 的字符集仍然还是 UTF8。
注意
treat-old-version-utf8-as-utf8mb4
参数默认打开,如果客户端强制需要用 UTF8 而不用 UTF8MB4,需要在配置文件中关闭。
1、原表实际存utf8,在拿出来用的时候tidb会转换成utf8mb4的
2、utf8mb4是utf8的超集,改了后旧数据还是utf8,新进入的数据是utf8mb4
3、将正式库要改字符集的表导入测试库进行测试后,在改正式库字符集