MySQL 8.x 降级到 MySQL 5.7 迁移数据踩坑
MySQL 8.x 的版本的内存占用相比 MySQL 5.7 要高上不少,在 1G 内存的 VPS 允许 8.x 版本非常的吃力,想要降级到 5.7 的话,导入数据库又会提示 Unknown collation: 'utf8mb4_0900_ai_ci'
主要是因为 MySQL 8.x 的 utf8mb4_0900_ai_ci
排序规则在 MySQL 5.7 中不存在,高版本导出的数据在低版本导入时,需要将 utf8mb4_0900_ai_ci
替换为 utf8mb4_general_ci
Linux / macOS
sh
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g' dump.sql
Windows
powershell
(Get-Content dump.sql) -replace 'utf8mb4_0900_ai_ci', 'utf8mb4_general_ci' | Set-Content dump.sql
如果你还没有导出数据,则可以在导出的时候就提前处理
sh
mysqldump --default-character-set=utf8mb4 --collation-server=utf8mb4_general_ci -u root -p database_name > dump.sql
除了 utf8mb4_0900_ai_ci
以外,MySQL 5.7 还有一些不兼容的排序规则和字符集,如果遇到需要用同样的方法将其全部替换为 5.7 支持的排序规则和字符集
预览: