﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-肖麦-文章分类-MySql</title><link>http://www.blogjava.net/merek/category/42031.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 09 Oct 2009 14:58:12 GMT</lastBuildDate><pubDate>Fri, 09 Oct 2009 14:58:12 GMT</pubDate><ttl>60</ttl><item><title>Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 一个解决办法</title><link>http://www.blogjava.net/merek/articles/297556.html</link><dc:creator>肖麦</dc:creator><author>肖麦</author><pubDate>Fri, 09 Oct 2009 07:41:00 GMT</pubDate><guid>http://www.blogjava.net/merek/articles/297556.html</guid><wfw:comment>http://www.blogjava.net/merek/comments/297556.html</wfw:comment><comments>http://www.blogjava.net/merek/articles/297556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/merek/comments/commentRss/297556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/merek/services/trackbacks/297556.html</trackback:ping><description><![CDATA[<div>
<script type="text/javascript">
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length>300) {
text = text + ""r"n"n本文来自CSDN博客，转载请标明出处：" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script>
<script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
<p>&nbsp;<span id="topicSubject" twffan="done" csdnid="topicSubject">MYSQL错误:Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '='</span><span twffan="done" csdnid="isPrime"> <img alt="" src="http://topic.csdn.net/u/ui/images/blank.gif" twffan="done" />一个解决办法</span></p>
<p><span twffan="done" csdnid="isPrime"><span twffan="done" csdnid="isPrime"><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/elifefly/EntryImages/20081020/4.jpg" width="643" align="center" height="45" /></span></span></p>
<p><span twffan="done" csdnid="isPrime">异常的意思是：字段字符集编码不同，不合法的连接。</span></p>
<p><span twffan="done" csdnid="isPrime">用show full columns from tenant;命令查看tenant表各个字段的字符编码。</span></p>
<p><span twffan="done" csdnid="isPrime">再用show full columns from employees;命令查看employees表各个字段的字符编码。</span></p>
<p><span twffan="done" csdnid="isPrime">发现 tenant中的unitno字段和 employee中的unitno字段的字符编码类型不一致。一个是GBK的，一个是GB2312的。</span></p>
<p><span twffan="done" csdnid="isPrime">然后用</span></p>
<p><span twffan="done" csdnid="isPrime"><font color="#ff6600">ALTER TABLE `tenant` CHANGE `unitno` `unitno` VARCHAR( 32) CHARACTER SET gb2312 COLLATE gb2312_bin NOT NULL</font></span></p>
<p><span twffan="done" csdnid="isPrime">命令修改<font color="#ff6600">tenant</font>表中的<font color="#ff6600">nuitno字段</font>的字符编码为gb2312类型。保证与整个数据库的字符编码gb2312一致。</span></p>
<p><span twffan="done" csdnid="isPrime">或者使用alter table <font color="#ff6600">tenant</font> convert to character set gb2312;命令，把整个表的字符编码设为gb2312。</span></p>
<p><span twffan="done" csdnid="isPrime">另外，值得注意的是：</span></p>
<p><span twffan="done" csdnid="isPrime"><font color="#000080">[mysql] </font></span></p>
<p><span twffan="done" csdnid="isPrime"><font color="#000080">default-character-set=gbk&nbsp; 或者 default-character-set=gb2312</font></span></p>
<p><span twffan="done" csdnid="isPrime"><font color="#000080">还有一个在服务端的 default-character-set=gbk 也要改 <br />
然后重起mysql 服务器.</font><br />
</span></p>
<p><span twffan="done" csdnid="isPrime">这个方法。本人试了，是不行的。不知道其他的什么情况。</span></p>
<p><span style="font-size: 14pt;" twffan="done" csdnid="isPrime">参考文章如下：</span></p>
<p><span twffan="done" csdnid="isPrime">1.<a href="http://space.itpub.net/7380741/viewspace-50854">http://space.itpub.net/7380741/viewspace-50854</a></span></p>
<span twffan="done" csdnid="isPrime">
<p>最重要的是这个问题：</p>
<p>Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (gb2312_chinese_ci,IMPLICIT) for operation '='</p>
<p>相信有很多人碰到，意思是说字符编码不一样，不能进行比较，也就是说数据库内部的编码都不一样，有的数据是</p>
<p>gbk_chinese_ci,有的数据是gb2312_chinese_ci，因此解决此问题的核心就是将数据库所有的编码进行统一。</p>
<p>进入命令行模式，</p>
<p>如果MySQL数据库已经安装好，可以使用下列SQL命令查看MySQL当前的字符集设置： <br />
mysql&gt; SHOW VARIABLES LIKE 'character_set_%'; <br />
+--------------------------+----------------------------+ <br />
| Variable_name | Value | <br />
+--------------------------+----------------------------+ <br />
| character_set_client | latin1 | <br />
| character_set_connection | latin1 | <br />
| character_set_database | latin1 | <br />
| character_set_results | latin1 | <br />
| character_set_server | latin1 | <br />
| character_set_system | utf8 | <br />
| character_sets_dir | /usr/share/mysql/charsets/ | <br />
+--------------------------+----------------------------+ <br />
7 rows in set (0.00 sec) <br />
<br />
mysql&gt; SHOW VARIABLES LIKE 'collation_%'; <br />
+----------------------+-------------------+ <br />
| Variable_name | Value | <br />
+----------------------+-------------------+ <br />
| collation_connection | latin1_swedish_ci | <br />
| collation_database | latin1_swedish_ci | <br />
| collation_server | latin1_swedish_ci | <br />
+----------------------+-------------------+ <br />
3 rows in set (0.00 sec) </p>
<p>依次执行：</p>
<p>set character_set_client =gb2312; <br />
<br />
set character_set_connection =gb2312; <br />
<br />
set character_set_database =gb2312; <br />
<br />
set character_set_results =gb2312; <br />
<br />
set character_set_server =gb2312; <br />
<br />
set character_set_system =gb2312; --此处utf-8也可以<br />
<br />
然后执行：</p>
<p>SET collation_server = gb2312_chinese_ci </p>
<p><br />
SET collation_database = gb2312_chinese_ci </p>
<p>SET collation_connection =gb2312_chinese_ci </p>
<p>执行完之后，请检查mysql下每个数据库，表，字段是否都是gb2312，不是则改过来，这样子就不会出现</p>
<p>Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and
(gb2312_chinese_ci,IMPLICIT) for operation
'='这个错误了，网上有资料说要重装，其实根本就不必，改动其编码即可</p>
<p>.................</p>
<p>2.<a href="http://hi.baidu.com/lym0719/blog/item/54f2d43e1be218c77d1e7193.html">http://hi.baidu.com/lym0719/blog/item/54f2d43e1be218c77d1e7193.html</a></p>
</span>
<p><span twffan="done" csdnid="isPrime">1.如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题<br />
2.修改数据库编码，如果是数据库编码不正确: 可以在phpmyadmin 执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin <br />
以上命令就是将test数据库的编码设为utf8<br />
3.修改表的编码：ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin <br />
以上命令就是将一个表category的编码改为utf8<br />
4.修改字段的编码：<br />
ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL <br />
以上命令就是将test表中 dd的字段编码改为utf8<br />
5.如果是这种情况容易解决，只需检查下页面，修改源文件的charset即可<br />
, //这个正确就无问题了<br />
6.这种情况也是修改页面charset即可,<br />
。。。。。。。</span></p>
<p><span twffan="done" csdnid="isPrime">3.<a href="http://hi.baidu.com/yaolihui/blog/item/cf0ee2c48260efcd38db4945.html">http://hi.baidu.com/yaolihui/blog/item/cf0ee2c48260efcd38db4945.html</a></span></p>
<p><span twffan="done" csdnid="isPrime">查看 MySQL 数据列（column）的字符集。</span></p>
<pre>mysql&gt; show full columns from countries;<br />
</pre>
<p><span twffan="done" csdnid="isPrime">。。。。。。。。</span></p>
</div>
<img src ="http://www.blogjava.net/merek/aggbug/297556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/merek/" target="_blank">肖麦</a> 2009-10-09 15:41 <a href="http://www.blogjava.net/merek/articles/297556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>