解决 Mysql 导入时提示 ERROR 1253 和 1273 错误

前几天给服务器系统做了个大升级,重新编译 Nginx 支持 HTTP/3 Check 协议访问,升级 Mysql 到 8.0 版本,就在刚刚发现文章点赞功能无法写入数据库,降级 Mysql 到 5.7 版本,在 MySql5.7 导入 Mysql8.0 的备份文件时提示 ERROR 1253 和 ERROR 1273 错误。

解决方案

当提示 ERROR 1253 和 ERROR 1273 错误时,不要担心可以轻松解决,这是因为导入的备份文件为高版本数据库备份文件导致的不兼容,只需要更改些备份文件参数即可解决,错误提示如下:

# 错误提示 ERROR 1253
wait err=exit status 255, busi errmsg=import sqlfile failed, err=ERROR 1253 (42000) at line 169: COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'

# 错误提示 ERROR 1273
wait err=exit status 255, busi errmsg=import sqlfile failed, err=ERROR 1273 (HY000) at line 221: Unknown collation: 'utf8mb4_0900_ai_ci'

在备份文件中搜索 utf8mb4_0900_ai_ci,将备份文件中的 utf8mb4_0900_ai_ci 全部替换为 utf8_general_ci,如下图:

然后再再备份文件中搜索 utf8mb,再将备份文件中的 utf8mb4 全部替换为 utf8,如下图:

替换完成 utf8mb4_0900_ai_ci 与 utf8mb 后,新建 utf8 的数据库,重新导入修改后的数据库备份文件。