java.sql.SQLException: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) ....错误

错误:

查资料知道是多表联查过程中,设计表时字符串varchar类型字段选择编码方式时不一致导致的:

原来utf8mb4_unicode_ci和utf8_general_ci列不能混合查询!!!!

将要查的表字段编码方式统一即可。

最后补充下查的资料:

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

猜你喜欢

转载自blog.csdn.net/harry5508/article/details/81323405