You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助解决MySQL报错mysql.connector.errors.DatabaseError: 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'及相关疑问

求助解决MySQL报错mysql.connector.errors.DatabaseError: 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'及相关疑问

兄弟,我来帮你捋捋这个问题哈!首先这个报错的根源很明确:你当前用的数据库(Kali默认装的大概率是MariaDB或者旧版MySQL)不支持utf8mb4_0900_ai_ci这个排序规则——这个规则是MySQL 8.0才新引入的,而MariaDB或者低于8.0的MySQL压根没这个东西,所以才会报错。

下面给你一步步解决的办法,还有你关心的几个疑问:

一、先确认你的数据库版本

先打开MySQL命令行,输入SELECT VERSION();,看看输出结果是MySQL还是MariaDB,以及具体版本号,这样能更精准调整方案。

二、找到配置文件的位置

Kali里MySQL/MariaDB的配置文件一般在这几个地方,你挨个找找:

  • 主配置文件:/etc/mysql/my.cnf
  • 如果是MariaDB,服务端配置:/etc/mysql/mariadb.conf.d/50-server.cnf
  • 自定义配置目录:/etc/mysql/conf.d/下的.cnf文件

三、解决排序规则报错的两种方法

方法1:直接修改现有数据库和表的排序规则

如果你的爬虫用的数据库已经创建了,直接在MySQL命令行里操作:

  1. 先切换到目标数据库:USE 你的数据库名;
  2. 修改数据库的默认排序规则:ALTER DATABASE 你的数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
  3. 再修改每个表的排序规则(如果表已经建好了):ALTER TABLE 你的表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;

方法2:修改配置文件全局设置默认规则

这样后续新建的数据库和表都会自动用兼容的规则:

  1. 找到前面说的配置文件,打开后找到[mysqld]区块,添加或者修改成下面的内容:
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_520_ci
  1. 保存文件后,重启MySQL服务:service mysql restart
  2. 之后再运行你的爬虫,应该就不会报这个错了

四、关于MySQL Community Server和Kali默认安装软件的区别

Kali默认装的基本都是MariaDB,它是MySQL的分支,由原MySQL开发团队维护,语法上和MySQL完全兼容,但在一些细节上有差异:比如你遇到的排序规则,utf8mb4_0900_ai_ci是MySQL 8.0独有的,MariaDB用的是utf8mb4_unicode_520_ci这类兼容的规则;另外在默认配置、部分功能实现上也有小区别。

而MySQL Community Server是官方的开源版本,如果你安装的是8.0及以上版本,自带utf8mb4_0900_ai_ci这个排序规则,就不会出现这个问题了。

备注:内容来源于stack exchange,提问作者alson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 18:07:56