mysql查询报错Illegal mix of collations...

一、出现原因

出现Illegal mix of collations错误通常是由于数据库表中使用了不同的字符集(collations)导致的。在MySQL中,字符集(collations)是用来指定字符集编码规则的,例如:UTF-8、GBK等。当在一个查询或比较操作中,发现两个字符串的字符集(collations)不一致时,就会出现Illegal mix of collations错误。

二、解决方案

方案1:在查询或比较操作中显式指定字符集(collations),例如:

select a.id,a.name from table1 a join table2 b on a.id=b.id where a.name COLLATE utf8mb4_general_ci =  b.name COLLATE utf8mb4_general_ci

方案2:将表中所有字段的字符集(collations)改为相同的字符集(collations)。具体步骤如下:

  1. 查看表中所有字段的字符集(collations);
  2. 修改表中所有字符集(collations)为一致的字符集(collations);
  3. 对表中所有字段重新建立索引,以保证索引的一致性。

示例如下: 

-- 查看表中所有字段的字符集(collations)
SHOW FULL COLUMNS FROM table_name;

-- 修改表中所有字段的字符集(collations)为utf8mb4_general_ci
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 修改表的字符集(collations)为utf8mb4_general_ci
ALTER TABLE table_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 对表中所有字段重建索引,如下重建主键索引,其他索引可自行修改
ALTER TABLE table_name DROP PRIMARY KEY, ADD PRIMARY KEY (id);

猜你喜欢

转载自blog.csdn.net/wangchange/article/details/139231166