从 MySQL 5.5 升级到 8.x 版本。
MySQL 5.7 更改了默认字符集从 latin1 改为了 utf8mb4。但如果直接升级,旧的表仍沿用 latin1 字符集,与系统新配置不匹配。
这时就需要用 ALTER TABLE 语句修改这些表的字符集为 utf8mb4,并改为 utf8mb4_general_ci 排序规则,与系统一致。
1.1、修改表的默认字符集和排序规则
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
1.2、只想修改排序规则
ALTER TABLE table_name COLLATE utf8mb4_general_ci;
修改后,系统对该表的字符集支持会更加完整,特别是对表中包含的 emoji 表情及中日韩文字的存储。查询排序也会与系统统一
修改完成后,使用 SHOW CREATE TABLE 语句查看表结构,确认字符集和排序规则是否修改成功。
【注意】: 直接修改表的字符集和排序规则会导致数据存储格式改变,可能会造成数据损坏或索引失效,所以要非常小心操作。一般建议使用新的字符集重新建表,然后使用 INSERT 转换数据
【警告】: 改数据库表的字符集编码是高风险操作,直接修改会造成数据格式改变,极易导致数据损坏。正确的处理方式是:备份原数据,使用新的字符集建立空表,写入转换后的数据。如非必要,不要直接修改数据库表字符集,因为这可能导致存储引擎崩溃、索引失效等,继而引起数据无法读取、软件异常等严重后果。谨慎处理字符集更改,确保数据安全
。