MySQL 8.0 出来也有很长一段时间了,最近计划将 MySQL 5.7.39 升级为 MySQL 8.0.32,由于原数据中使用的字符集和排序规则比较杂乱,且 MySQL 8.0 默认引擎、字符集都改为了 InnoDB 和 utf8mb4,所以趁这次机会把数据库中使用的字符集和排序规则统一一下。
本来打算人工修改,但是上百张表修改起来也是一个不小的工作量,于是通过网络找到了找到了如下方法:
1. 更改数据库的默认字符集和排序规则
1 | -- ALTER DATABASE `<数据库名>` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'; |
2. 更改表存储引擎、默认字符集和排序规则
1 | -- ALTER TABLE `<数据库名>`.`<表名>` ENGINE = InnoDB, CHARACTER SET = utf8mb4, COLLATE = utf8mb4_unicode_ci; |
3. 更改字段字符集和排序规则
1 | -- ALTER TABLE `<数据库名>`.`<表名>` |
注意
: 如果需要修改生产环境数据库,请在访问低峰期时执行 SQL 语句,如果表中涉及外键可使用 SET FOREIGN_KEY_CHECKS=0;
暂时关闭外键约束,执行完后再使用 SET FOREIGN_KEY_CHECKS=1;
打开外键约束。