由于一台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。您可以在创建表时指定字符集排序规则,例如:
代码语言:javascript复制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 配置文件中添加以下配置:
代码语言:javascript复制[mysqld]
# 启用 utf8mb4_0900_ai_ci 排序规则
collation-server=utf8mb4_0900_ai_ci
然后重启 MySQL 服务,使配置生效。
请注意,在修改 MySQL 配置文件之前,最好先备份配置文件,以防止意外错误。
本人最终采用方案一,直接全局替换导出的SQL脚本为utf8mb4_general_ci,完美解决。
文章目录
- 解决方案
function Catalogswith(){document.getElementById("catalog-col").classList.toggle("catalog");document.getElementById("catalog").classList.toggle("catalog")}