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

2024-02-07 14:10

本文主要是介绍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

这篇关于Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for .....的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687975

相关文章

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

批量文件编码转换用python实现的utf8转gb2312,vscode设置特殊文件的默认打开编码

批量文件编码转换用python实现的utf8转gb2312, 任意编码之间的相互转换都是可以的.改一下下面的参数即可 convert.py文件内容如下 import osimport globimport chardet#检测文件编码类型def detect_file_encoding(file_path):with open(file_path, 'rb') as f:data = f

python中使用FormatDataLibsvm转为txt文件后报错illegal multibyte sequence

‘gbk’ codec can’t decode byte 0xff in position 0: illegal multibyte sequence 这个报错是因为编码不对,正确的编码是ANSI编码,txt文件打开后另存为可以看到当前的文本文档编码 但是excel不能直接保存ANSI编码的txt文件 所以不能直接保存为ANSI编码 有两种解决办法 1.新建一个txt文件(新建的txt文件

gitlab结合docker实现CI/CD

gitlab的continue integration 和 continue delivery,因为高可用尚未实现暂时不做continue deployment 1.部署gitlab-runner 官网:https://docs.gitlab.com/runner/install/docker.html centos7下docker部署方式。 docker run -d -

Jenkins构建CI/CD

CI/CD 软件开发的连续方法基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预。 它涉及在每次小迭代中不断构建,测试和部署代码更改,从而减少基于有缺陷或失败的先前版本开发新代码的机会。 这种方法有三种主要方法,每种方法都根据最适合的策略进行应用。 持续集成(Continuous Integration, CI

如何设置 zend studio 默认编码为UTF8

今天用zend studio 打开文件时发现为乱码,这肯定是编码出了问题,我看了一下果然是编码出了问题,默认的是以GBK编码方式打开,我换utf8编码打开就好了,换编码打开的方法是: 1、点击工具栏中的edit,  找到set encoding···  将编码改为utf8即可。 这样改明显很麻烦,怎么把默认编码设置成为utf8呢? 1 、依次打开 window->

CI 添加公共函数 全局函数 自定义函数

CodeIgniter 中公共函数可以通过 helper 辅助函数实现。 创建 common_helper.php 文件,定义所需公共函数,存放至 application/helpers 目录中。 在 application/config/autoload.php 中配置 $autoload[‘helper’] = array(‘common’); 即可。

利用Travis CI 让你的github项目持续构建

Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜。目前大多数的github项目都已经移入到Travis CI的构建队列中,据说Travis CI每天运行超过4000次完整构建。对于做开源项目或者github的使用者,如果你的项目还没有加入Travis CI构建队列,那么我真的想对你说out了。

whose UTF8 encoding is longer than the max length 32766

问题描述:java.lang.IllegalArgumentException: Document contains at least one immense term in field=“cf_jg.keyword” (whose UTF8 encoding is longer than the max length 32766) 原因:设置为keyword类型的字段,插入很长的大段内容后,报