Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

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

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 支持的排序规则和字符集