Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLIC

在mysql5中遇到的问题:

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘=‘

碰到个字符集问题。

----------------------------------

当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。

utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß’等于‘ss’。

utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的 校对规则相比,比较正确性较差)。

例如,使用utf8_general_ci和utf8_unicode_ci两种 校对规则下面的比较相等:
   Ä = A
   Ö = O
   Ü = U

两种校对规则之间的区别是,对于utf8_general_ci下面的等式成立:
   ß = s

但是,对于utf8_unicode_ci下面等式成立:
   ß = ss

对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集 校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。

utf8_general_ci也适用与德语和法语,除了‘ß’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确

----------------------------------------------------------------------------------------------------------------------

解决方法:

只要修改一下表的字符集就可以了,如下:

ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

时间: 2024-10-06 13:29:40

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLIC的相关文章

c#程序连接mysql,报"Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='"的解决方案

=============================================== 20170607_第一次修改                       ccb_warlock =============================================== 工作关系开发一个连接mysql的c#程序,交付测试后反应在连测试环境的数据库后出现报错且数据无法获取的情况.(如下图所示) 查到了http://www.cnblogs.com/xiaochaohuashengm

[Err]1267 - Illegal mix of collations(utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘=’

SELECT * FROM table_a a  where a.id NOT IN (SELECT b.id FROM table_b  b); 先将两个数据表的编码统一,如果table_a的编码为utf8_general_ci,那么将这个表的编码修改下执行以下语句 alert table_a CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;再执行select语句,这样就可以解决编码冲突了:

处理【Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operatio】

原因:关联字段或表编码方式不一样,改成一样呗 原文地址:https://www.cnblogs.com/gyrgyr/p/12533530.html

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation '='

Error:Illegal mix of collations (utf8_general_ci,IMPLICIT) and (gbk_chinese_ci,COERCIBLE) for operation '='Errno:1267 问题很明显,就是Mysql字符编码问题,所以主要排查问题方向应该往设置编码及用到编码的地方 这里是Mysql设置编码的常用命令,一般在链接数据时会用到: SET CHARACTER_SET_CLIENT = utf8, CHARACTER_SET_CONNECTI

mysql : Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf16_general_ci,IMPLICIT) for operation '

mysql多表关联查询报错Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf16_general_ci,IMPLICIT) for operation ' 查了这两张表都是utf-8格式的,为什么还是不能查询,后来发现字段里的排序规则有一张表是utf-16的, 修改后即可查询 mysql : Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf16_gen

mysql字符集问题 错误代码: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_croatian_ci,IMPLICIT) for operation '='

一般是多表或跨库表查询导致出现的问题,其原因是两张表的字符集不一样导致的,那为什么两张表的字符集会不一样?这是由于架构师或者开发人员在建表的时候不小心选错字符集的原因导致的. 那好我们把两张表(或两个库的关联的两张表)的字符集更改为一样就可以了,是的我们改过来发,发现变态的MYSQL还是一样的错误!!! 我在网上查了一些资料说的感觉很全,但太理论化且不实用(就是解决不了问题). 根据上面的分析我们想两张表的字符集改为一样为目的肯定是可以的,然后我在想是不是字段也存在字符集的概念,但是可恶的是工具

解决:Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT)

参考博文: http://mayue85.blog.163.com/blog/static/553886092010317111348552/ 在j2ee连接数据库时出现问题:Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) 错误的意思是:结果集中有两种字符集. 反正就是说某两个地方编码格式不同,要解决问题就要将它们设置一致. 我的目标是把所有的属性设置成utf8. 查看m

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci...

最近刚接触mysql,今天用mysql插入中文字符的时候,程序报错“Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci...”,网上搜了下,知道是字符编码的问题,于是就改啊改,但是最后还不行,后来才发现,只改数据库和数据表的是没用的,必须还要改字段的,我用的是N8(注意:这样改,每次都只能改一个字段的,下图只改了UserName的,其他的如果需要的话也要逐一修改)

Illegal mix of collations (big5_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

解释: 非法的混合排序规则(big5_chinese_ci)和(utf8_general_ci)操作“like”. 原本是单个字段查询数据的,现在是把所有的字段用一个搜索框来查询. 主要出问题是下列这个查询条件 两张表里 存在相同的ID_Card字段,但是两张表中的字段字符集和排序规则是不一样的. 一张表是: 另外一张表示: 改成utf8_general_ci就可以了! 主要是排序规则的问题! 排序规则: Illegal mix of collations (big5_chinese_ci,IM