Mysql报错1267 – Illegal mix of collations问题的解决方法!
Mysql报错1267 - Illegal mix of collations问题的解决方法!
这篇文章主要介绍了mysql报错1267 - Illegal mix of collations问题的解决方法,解决这个问题的方法是将两个字符集统一起来,文中介绍了好几种解决的办法,需要的朋友可以参考下。
我输入下面代码
1
2
3
4
5
6
7
8
|
SELECT * FROM po_pomainviewt WHERE cInvName IN ( SELECT SUBSTRING_INDEX(FileName, '.' , 1) FROM fileinfo ); |
错误
1
|
报错1267 - Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_german2_ci,IMPLICIT) for operation '=' |
这个错误是由于在执行查询时,两个表的字符集排序规则(collation)不一致。你可以通过以下几种方式来解决这个问题:
1. 使用 COLLATE 指定相同的排序规则
你可以在查询中明确指定 COLLATE
,让两边的排序规则一致。例如:
1
2
3
4
5
6
|
SELECT * FROM po_pomainviewt WHERE cInvName COLLATE utf8mb4_german2_ci IN ( SELECT SUBSTRING_INDEX(FileName, '.' , 1) COLLATE utf8mb4_german2_ci FROM fileinfo ); |
在这个例子中,我使用了 utf8mb4_german2_ci
排序规则。你也可以根据需要将其更改为其他适合你的排序规则。
2. 修改表的排序规则
你可以修改表的排序规则,使其在整个表中保持一致:
1
2
|
ALTER TABLE po_pomainviewt CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci; ALTER TABLE fileinfo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci; |
3. 统一数据库的排序规则
你也可以修改数据库的排序规则,让所有新表使用相同的排序规则:
1
|
ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_german2_ci; |
这个方法直接比较字符的二进制值,不受排序规则影响。
选择最适合你当前情况的方法进行处理。
总结
到此这篇关于mysql报错1267 - Illegal mix of collations问题解决方法的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。
共有 0 条评论