Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for .....

后台报错java.sql.SQLException: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation ‘=’

    还是不能高估自己的记忆力,今年四五月份时就碰到过这个错误,现在10月份碰到这个错误全然不记得自己当时是怎样解决这个错误的,在同样的问题上又多花了几个小时的时间,看来还是有必要记录一下,好记性不如烂笔头…
报错信息截图
    这里是MySql在多表关联查询时出的错;出现这个错误的原因一般是数据库字符集、排序规则不一致导致的。对查询涉及到的数据库进行检查,不仅仅是表格的字符集、排序规则,还要检查字符串的字符集、排序规则。

数据库字符集、排序规则

表格字符集、排序规则

字段字符集、排序规则

    将数据库、表格、字段的字符集都保持一致,排序规则尽量不要使用utf8_general_ci,养成良好的开发习惯,避免开发时出现此类问题。

最后补充点资料:(引用自https://blog.csdn.net/harry5508/article/details/81323405,感谢!)

utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。

utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。

utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。

utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。

utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。

utf8mb4兼容utf8,且比utf8能表示更多的字串,将编码改为utf8mb4外不需要做其他转换。

排序规则:是指对指定字符集下不同字符的比较规则。其特征有以下几点:

1、 两个不同的字符集不能有相同的排序规则

2、 两个字符集有一个默认的排序规则

3、 有一些常用的命名规则。如_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(case sensitive),_bin表示二进制的比较(binary).

为了易于数据扩展,一般我们创建数据库都会选择utf8字符集,那么utf8字符集的默认排序规则是utf8_general_ci

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值