Illegal mix of collations
1、背景
在做关联查询时候出现问题
select * from A where ref_b_id = (select id from b where user_id='11');
将会提示你如下错误
Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='.md
2、分析
由上面字面意思就是 utf8mb4_unicode_ci 和 utf8mb4_general_ci 混合使用,同时也说明不能混合使用
collations关键字是排序规则,a和A同时存在,顺序应该是aA还是Aa, 或者说a==A? 不区分大小吗?
1、为啥需要存在collations? 它解决什么问题?第一点世界上有很多种语言,语言差异很大,比如中文和日元有相似地方,但是不一样,所有不同字符集去编码对应语言,比如现在已经编码好保存到数据库了,我们现在需要查询,数据库怎么知道那条数据算第一条数据,数据库肯定是对所有数据进行比较,最常见就是ASCII的字符代表数字大小,还有一些情况我们就是认为区分大小(默认是不区分)a A是不一样,这些字符的比较工作需要有评判规则,而这些规则就是collations所做的事情。
不同字符比较规则,自然就不能关联比较了,也就不能用等号,日语的某些汉字和中文汉字虽然展示是一样但是实际编码规则是不一样
3、解决方法
- 解决方式:让两个表统一一下collations
3.1、怎么统一collations
如何查询表使用哪个collations
SHOW FULL COLUMNS FROM 数据库名.表名
- 可以看出目前是collation的是utf8mb4_general_ci
如何查看当前数据库schema的collation?
SHOW VARIABLES LIKE 'collation_database';
如何修改当前数据库默认collation?例如修改为 utf8mb4_unicode_ci
ALTER DATABASE COLLATE utf8mb4_unicode_ci;
如何修改当前表默认collation? 例如修改为 utf8mb4_unicode_ci
ALTER TABLE t_application_ocr_result COLLATE utf8mb4_unicode_ci;
如何修改某个表的字段默认collation 例如修改user_id为 utf8mb4_unicode_ci
ALTER TABLE t_application_ocr_result MODIFY user_id varchar(28) COLLATE utf8mb4_unicode_ci;
查看数据库表死锁记录
SHOW ENGINE INNODB STATUS; SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
3、参考
- 如何使得mysql不区分大小写?:How can I make SQL case sensitive string comparison on MySQL?
- Mysql的collation是什么?https://www.quora.com/What-is-collation-in-MySQL
- MySQL查看、修改字符集及Collation
Illegal mix of collations相关推荐
- 编码不一致问题-Illegal mix of collations
在解决bug时候碰到一个Illegal mix of collations问题,这个因为编码不一致到导致的错误.错误发生率较为高.经常发生在时间的比较上面.较为常见的一劳永逸的办法,是更改数据库的编码 ...
- Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=
问题描述:MySQL进行字符串比较时发生错误: SELECT a.equ_no, b.fullCode FROM equipment a, ( SELECT t.*, getEquTypeFullCo ...
- 【Java】application run failed Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and
springboot 启动时报这个错:application run failed Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and ...
- 调用存储过程时报错:Illegal mix of collations
调用存储过程时,发生报错,信息如下: ERROR 1267 (HY000): Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (l ...
- MySQL replication illegal mix of collations
MySQL replication case 一则 转载:http://www.vmcd.org/2013/09/mysql-replication-case-%E4%B8%80%E5%88%99/ ...
- 报错:Illegal mix of collations
问题: 服务端报错:Error: ER_CANT_AGGREGATE_2COLLATIONS: Illegal mix of collations (latin1_swedish_ci,IMPLICI ...
- Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operat
1.问题 今天又在mysql中遇到了,吐血. 2.解决方案 SQL最后加上 COLLATE utf8mb4_unicode_ci SELECT t2.cust_id as cust_id_ex,t1. ...
- Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operat
多表关联查询报错先看报错结果 我想通过这个org_post_user_name 表和这个has 的复合表进行查询 通过这个条件关联在一起查询 where ssorg.org = has.qwe 然后 ...
- MySQL:Illegal mix of collations (utf8_general_ci,COERCIBLE) and (gbk_chinese_ci,IMPLICIT) for operat
MySQL:Illegal mix of collations (utf8_general_ci,COERCIBLE) and (gbk_chinese_ci,IMPLICIT) for operat ...
- Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_0900_as_ci,IMPLICIT) for operat
java.sql.SQLException: Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_0900_as_ ...
最新文章
- jQuery EasyUI DataGrid 分页 FOR ASP.NET
- Chosen中选择项的更新
- 程序员们请收好这本JVM日历:Java 2018大事回顾
- Fiori Elements - sap.ui.core.util.XMLPreprocessor2 - insert fragment
- 利用Android Studio快速搭建App
- HDU 下沙的沙子有几粒
- python合并视频和音频_真没想到,Python 还能实现 5 毛特效
- python邮件模块_Python收发邮件模块,用,来,发送,接收
- 算术表达式:前缀表达式、中缀表达式、后缀表达式相互转换(手算法)
- 接收xml参数_如何解决SpringMVC接收到的请求参数为乱码的问题
- 用友通总账问题维护精粹
- unity资源释放(AssetBundle和Asset)
- coolie PK webpack 之三:模块构建
- 计算机信息科学学科分类,-学科分类与代码.doc
- 【干货】ubuntu18.04+win7双系统+双硬盘安装总结
- 大数据人工智能常用特征工程与数据预处理Python实践(2)
- 如何用python进行相关性分析_Python 相关性分析 显著性检验
- 删除ubuntu自带软件 及 WPS 安装(转)WPS字体已备份
- Python创建免费Ip代理池,伪装Ip。
- 当运行pychrm时遇到please select a valid interpreter怎么解决