视图查询报错Illegal mix of collations (utf8mb4_unicode_ci,COERCIBLE) and (utf8mb4_0900_ai_ci,COERCIBLE) for operation '='是什么原因
时间: 2023-11-23 21:51:55 浏览: 177
这个错误通常是由于比较的两个字符串使用了不同的字符集或排序规则导致的。在MySQL中,每个数据库和表都有一个默认的字符集和排序规则,如果在比较时使用了不同的字符集或排序规则,就会出现这个错误。
解决方法是将比较的两个字符串转换为相同的字符集和排序规则,可以使用函数CONVERT()或COLLATE()来实现。
例如,如果要将字符串a和字符串b进行比较,可以使用以下语句:
SELECT * FROM table WHERE CONVERT(a USING utf8mb4) = CONVERT(b USING utf8mb4);
或者:
SELECT * FROM table WHERE a COLLATE utf8mb4_unicode_ci = b COLLATE utf8mb4_unicode_ci;
相关问题
视图报错 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '='
在执行SQL语句时,如果比较两个表的字段时出现了"Illegal mix of collations"错误,这意味着比较的两个字段的字符集不一致。具体地说,一个字段的字符集是utf8mb4_general_ci,而另一个字段的字符集是utf8mb4_unicode_ci。这个错误会导致"="操作无法进行。为了解决这个问题,有几个方法可以尝试:
1. 在查询时进行数据类型转换,使用CONVERT函数将字段的字符集转换为一致的utf8mb4_unicode_ci。例如,可以使用以下语句进行转换:
CONVERT(column_name USING utf8mb4) COLLATE utf8mb4_unicode_ci
2. 将两个表的字符集保持一致。可以使用ALTER TABLE语句将表的字符集修改为utf8mb4_general_ci。例如,可以使用以下语句进行修改:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
以上是解决"Illegal mix of collations"错误的两种常见方法。通过执行这些方法,您可以确保比较的字段具有相同的字符集,从而避免出现错误。希望对您有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [mysql字段编码不一致导致Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_...](https://blog.csdn.net/chen417980762/article/details/127068037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [MYSQL查询报错Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT)](https://blog.csdn.net/weixin_44729970/article/details/122099794)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
illegal mix of collations (utf8mb4_0900_ai_ci,implicit) and (utf8mb4_general
这个错误是由于在关联表查询时,涉及到的字段排序规则不一致导致的。具体来说,错误信息中提到的 "utf8mb4_0900_ai_ci" 和 "utf8mb4_general_ci" 是两种不同的字符集排序规则。
"utf8mb4_0900_ai_ci" 是一种新的排序规则,它是基于 Unicode 标准的排序规则,能够在各种语言之间精确排序。
"utf8mb4_general_ci" 是一种旧的排序规则,它是基于一般规则的排序规则,可能在某些情况下无法精确排序。
当在关联表查询中使用这两种不同的排序规则时,就会出现 "illegal mix of collations" 的错误。
解决这个问题的方法是将涉及到的字段的排序规则统一为一种规则,可以选择使用 "utf8mb4_unicode_ci" 规则,这样就能够避免这个错误的发生。
以下是一个示例,演示了如何解决这个错误:
```sql
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
这个示例中,将表名为 "table_name" 的表的字符集和排序规则都修改为 "utf8mb4_unicode_ci"。