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

===============================================

 2017/6/7_第1次修改                       ccb_warlock

===============================================

工作关系开发一个连接mysql的c#程序,交付测试后反应在连测试环境的数据库后出现报错且数据无法获取的情况。(如下图所示)

查到了http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/07/23/1783589.html后我意识到可能是表的字段的编码(navicat中时字段的"排序规则")与关联表字段的编码不一致,故导致该报错。

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

测试环境该表的编码图

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

开发环境该表的编码图

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

原文地址:https://www.cnblogs.com/straycats/p/6955890.html