MySQL不兼容的字符集排序规则(collation)导致报错

在使用MySQL8.0比对数据时报错如下:

复制代码
1267 - Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

原因分析:

一个字段使用的是 utf8mb4_0900_ai_ci,而另一个是 utf8mb4_general_ci,虽然它们都属于 utf8mb4 字符集,但排序规则不同,MySQL 无法自动决定如何比较,因此抛出错误。

说明:

复制代码
utf8mb4_general_ci:较旧,不区分重音(如 é = e),性能略快但排序不准确。
utf8mb4_0900_ai_ci:MySQL 8.0+ 默认,基于 Unicode 9.0,更准确(ai = accent insensitive, case insensitive)。

临时解决方案:在子查询中显式统一 collation(快速修复,无需改表结构)

如(但注意:COLLATE 必须加在子查询的字段上):

复制代码
SELECT * 
FROM wangchun 
WHERE sfzh IN (
    SELECT sfzh COLLATE utf8mb4_0900_ai_ci 
    FROM gaoqinghuji
);
相关推荐
SelectDB9 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
Database_Cool_10 小时前
AI Agent 长期记忆怎么存?阿里云 PolarDB-X 对接 Mem0 记忆框架实践
数据库·阿里云
会编程的土豆10 小时前
数据库范式
数据库·oracle
L16247610 小时前
MySQL 全环境生产快速安装 + 完整配置手册(整合国产银河麒麟适配 + 主从补充版)
数据库·mysql
yio_yin10 小时前
Spring事务管理(数据一致性)
数据库·sql·spring
X Chow10 小时前
MongoDB Beginner Guide 01:理解 NoSQL、文档模型与 Python 开发环境
数据库·mongodb·nosql
前端世界11 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql
nianniannnn12 小时前
Qt QMessageBox知识点
开发语言·数据库·qt
—Miss. Z—12 小时前
计算机二级MySQL——简单应用题(存储过程&存储函数)
数据库·oracle·php
Vect__13 小时前
MySQL 数据类型和约束:从字段设计到表结构建模
数据库·mysql