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/xiaochaohuashengmi/archive/2010/07/23/1783589.html后我意识到可能是表的字段的编码(navicat中时字段的"排序规则")与关联表字段的编码不一致,故导致该报错。

根据这个思路,设断点找到查询sql,检查测试环境中这几张表的字段编码,果然发现其中一个表的字段编码与别的表不一致,使用的都是utf8_unicode_ci(别的表设计的编码是utf8_general_ci)。

测试环境该表的编码图

我调试时借用的是开发环境,那么开发和测试环境这个表的编码有差异吗?随后查看了开发环境的配置,果然存在差异。

开发环境该表的编码图

猜测是开发环境改了该表的编码规则后没有更新到测试环境,故测试环境该表的编码和开发环境存在差异,进而导致在开发环境调试正常,但是在测试环境调试就报错。

即使那天已然升华,但愿初心不泯。

----------ccb_warlock

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

时间: 2024-11-14 22:59:14

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

解决: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

MySQL replication illegal mix of collations

MySQL replication case 一则 转载:http://www.vmcd.org/2013/09/mysql-replication-case-%E4%B8%80%E5%88%99/ Posted by admin on September 10th, 2013 最近同事处理了一则mysql复制错误.发出来参考下 MYSQL同步出错,报错信息如下: ? Last_Errno: 1267 Last_Error: Error 'Illegal mix of collations (u

日常问题记录--插入记录时报 Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 错误

背景: 写一个数据DB操作时,日志报Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 错误: 原因: 1.插入式代码中的数据类型为GBK: 2.DB建表时忘记修改默认的编码格式(默认为 Collation: latin1_swedish_ci 格式): 1.2结合之后,插入数据编码错误: 定位方法: 1.查看DB表的字段编码 show f

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 Error: Illegal mix of collations for operation 'concat'

在使用concat连接字符串时出现错误:MySQL Error: Illegal mix of collations for operation 'concat' 原因:字段操作默认为UTF8的编码,应该绝对统一使用UTF-8,而创建数据库时使用了其它编码.  解决方法:在Navicat for MySQL中删除掉原来的数据库,重新新建,新建时设置字符集和排序规则为UTF-8 MySQL Error: Illegal mix of collations for operation 'concat

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,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

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校对规则算法.一些字符还是不能支持.并且,不能完全支持组合的记号.这主要影响越南和俄罗斯的一些少数民族语言,

[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语句,这样就可以解决编码冲突了: