mysql 操作中,俩个sql独立运行,没有问题,但是union起来
报错
ERROR 1267 (HY000): Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (big5_chinese_ci,IMPLICIT) for operation 'UNION'后来尝试去掉中文字段(一个结果集有中文,一个没有),再次union,就ok难道在有中文的结果集和另一个没有中文的结果集union 的时候,寻要注意什么呢?

解决方案 »

  1.   

    检查表、字段的字符集是什么,字符集不统一
    show create table 表名,贴出来看看
      

  2.   

    两个表的字段的字符集不一样,一个是 gb2312, 一个是gbk
    仅用set names 'gbk' 是无法解决的。 
    给出你的SQL语句和create table xx , 写法上改一下需要。
      

  3.   

    似乎一个是gb2312, 一个是big5
    估计他有一个表是big5字符集。
    看来,要都转成utf8才行
      

  4.   

    gb2312_chinese_ci,IMPLICIT) and (big5是的,一个是big5 ,打得太快了。不需要转成 utf8, 语句说明一下就应该可以了。 
    但需要楼主给出测试用例。 (我现在很懒了,很少喜欢自己搭测试环境)
      

  5.   

    谢谢大家的的关注show create table table1 \G;
    *************************** 1. row ***************************
           Table: table1
    Create Table: CREATE TABLE `table1` (
      `infoID` int(6) unsigned zerofill NOT NULL auto_increment,
      `wlms` varchar(120) NOT NULL,
      `wlmsFull` varchar(300) NOT NULL,
      `dl` varchar(200) NOT NULL,
      `zl` varchar(200) NOT NULL,
      `xl` varchar(200) NOT NULL,
      `pm` varchar(200) NOT NULL,
      `dw` varchar(50) NOT NULL,
      PRIMARY KEY  (`infoID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gb2312
    1 row in set (0.00 sec)
     
    ERROR: 
    No query specifiedshow create table table2 \G;
    *************************** 1. row ***************************
           Table: table2
    Create Table: CREATE TABLE `table2` (
      `infoID` int(6) unsigned zerofill NOT NULL auto_increment,
      `wlms` varchar(120) character set big5 NOT NULL,
      `dw` varchar(50) character set big5 NOT NULL,
      `f_ww` int(1) unsigned NOT NULL,
      `sb` varchar(120) character set big5 default NULL,
      `pj` varchar(120) character set big5 default NULL,
      `fc` varchar(120) character set big5 default NULL,
      `th` varchar(120) character set big5 default NULL,
      `cz` varchar(120) character set big5 default NULL,
      PRIMARY KEY  (`infoID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gb2312
    1 row in set (0.00 sec)
     
    ERROR: 
    No query specified查询语句
    SELECT f.flowid,f.flowtype,z.wlms,f.flowstate,f.ownid,f.date FROM flow f,table1 z where f.infoid=z.infoid and f.flowtype='EFK' union SELECT f.flowid,f.flowtype,k.wlms,f.flowstate,f.ownid,f.date FROM flow f,table2 k where f.infoid=k.infoid and f.flowtype='EFC'
      

  6.   

    晕,我知道错在哪里了,谢谢大家哈,太粗心大意了,复制之前create table,忘记改字符集了
      

  7.   


    建议你还给重新贴一下你的 create table / insert 吧。