1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘, Time: 0.222000s 解决

一勺菠萝丶 2024-06-26 12:31:03 阅读 66

解释

utf8mb4_0900_ai_ci 是 MySQL 8.0 之后的默认字符集和校对。它提供了一种新的方式来存储和比较字符数据。其中:

utf8mb4 是字符集(charset),表示该字符集支持最大为4字节的UTF-8字符。0900 是 Unicode 校对的版本,这是 MySQL 8.0 使用的新版本。ai 表示 “accent insensitive”(不区分重音符号)。ci 表示 “case insensitive”(不区分大小写)。

原因:

您可能正在从一个 MySQL 8.0(或更高版本)的实例导出数据,并试图将其导入到一个更早版本的 MySQL 实例中,而早期的 MySQL 版本不支持 utf8mb4_0900_ai_ci 校对。

解决方法一:

更新目标MySQL版本:升级您的MySQL版本到8.0或更高版本,这样您就可以直接使用这个字符集和校对。

修改SQL文件:使用文本编辑器打开导出的SQL文件,将所有的 utf8mb4_0900_ai_ci 替换为 utf8mb4_unicode_ci(或您的MySQL版本支持的其他校对)。然后,您可以尝试再次导入。

例如,将:

CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci

替换为:

CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

更改导出设置:如果您使用工具(如phpMyAdmin、MySQL Workbench等)导出数据,可能可以在导出时更改字符集和校对的设置。

在采取上述措施之前,建议备份您的数据库和SQL文件,以防止数据丢失或损坏。

解决方法二:

如果您的目标数据库版本是MySQL 5.7,那么您应该将字符集和校对方式更改为MySQL 5.7支持的版本。utf8mb4 字符集在 MySQL 5.7 中是支持的,但 utf8mb4_0900_ai_ci 校对是不支持的。

以下是如何修改导出的SQL文件以使其兼容MySQL 5.7:

使用文本编辑器打开导出的SQL文件。

找到并替换所有的 utf8mb4_0900_ai_ciutf8mb4_unicode_ci

例如,将:

CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci

替换为:

CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

同样地,将:

CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

保留不变,因为 utf8mb4_bin 在MySQL 5.7中是支持的。

保存SQL文件。

尝试再次导入修改后的SQL文件到您的MySQL 5.7数据库。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。