utf8是三字节一个字符,而emoj表情是四子节,所以需要将字符集变更为utf8mb4。后者对utf8是兼容的。
对于已有数据的生产库,变更流程如下:
非常重要!不要在繁忙时段操作,否则锁表的后果不可预计
- 服务器端:jdbc连接需要支持emoj,但是jdbc连接串里的charset不支持utf8mb4。修改mysql的character_set_server为utf8mb4,需要重启实例。这样jdbc会自动检测这个参数,并保持一致
- mysql:将需要修改的表,用下述sql变更。完成后,所有char的字段都会修改
ALTER TABLE `test` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
时间: 2024-10-08 19:52:07