由于一台vps在下个月就要到期了,不打算续费了,所以打算把上面的数据进行迁移一下,然后迁移数据库某个库的时候报错了Unknown collation: 'utf8mb4_0900_ai_ci',我是通过navicat直接导出库,然后导入新库,发现就报错了,都是一些小问题,记录一下解决过程。

这个错误通常是由于 MySQL 数据库版本过低导致的,因为导出的数据库版本是8.0.x,而目标mysql库是5.7.x,因为 utf8mb4_0900_ai_ci 是 MySQL 8.0.0 及以上版本引入的一种字符集排序规则。如果您的 MySQL 版本低于 8.0.0,就无法使用这种排序规则,最终导致问题。

解决方案

要解决这个问题,您可以尝试以下几种方法:

方案一: 更改字符集排序规则
将 utf8mb4_0900_ai_ci 改为 MySQL 8.0.0 以下版本支持的一种字符集排序规则,例如 utf8mb4_general_ci。您可以在创建表时指定字符集排序规则,例如:

CREATE TABLE mytable (
  id INT NOT NULL,
  name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
  PRIMARY KEY (id)
);

方案二:升级 MySQL 版本
如果您的 MySQL 版本太低,无法支持 utf8mb4_0900_ai_ci,那么您可以考虑升级 MySQL 版本到 8.0.0 或更高版本。在 MySQL 8.0.0 及以上版本中,utf8mb4_0900_ai_ci 是默认的字符集排序规则。

方案三:修改数据库配置文件(来自GPT回答,未测试)
如果您无法更改字符集排序规则或升级 MySQL 版本,您可以尝试修改 MySQL 配置文件,启用 utf8mb4_0900_ai_ci 排序规则。在 MySQL 配置文件中添加以下配置:

[mysqld]
# 启用 utf8mb4_0900_ai_ci 排序规则
collation-server=utf8mb4_0900_ai_ci

然后重启 MySQL 服务,使配置生效。

请注意,在修改 MySQL 配置文件之前,最好先备份配置文件,以防止意外错误。

本人最终采用方案一,直接全局替换导出的SQL脚本为utf8mb4_general_ci,完美解决。

文章目录