原创 2008年12月25日 11:54:00
 

今天在使用数据库临时表的游标时,发现了这个异常。
经查找资料,最终结果。这里和大家分享一下。 字符集问题还是一定要统一的才是最简单的。


create temporary table temp2(mc1 varchar(20) default '',mc2
varchar(20)default '',mc3 varchar(20)default '',mc4 varchar(20)default
'',mc5 varchar(20)default '',parentid varchar(20),levelnum int); --
生成临时表

declare mycur67 CURSOR for select
concat(replace(space(levelnum-1),space(1),'------'),mc1,mc2,mc3,mc4,mc5)
as mc,parentid as location from temp2;

异常信息为:
Illegal mix of collations for operation 'concat'

将concat的代码去掉后面的部分内容,运行结果为

declare mycur67 CURSOR for select
concat(replace(space(levelnum-1),space(1),'------'),mc1) as mc,parentid
as location from temp2;

错误:Illegal mix of collations (utf8_general_ci,COERCIBLE) and
(gb2312_chinese_ci,IMPLICIT) for operation 'concat'

可见,是2个字段的编码类型不一致造成的。


原来我的数据库创建时,选择的是gb2312编码,而字段操作默认为UTF8的编码。 绝对统一使用UTF-8

create
temporary table temp2(mc1 varchar(20) default '',mc2 varchar(20)default
'',mc3 varchar(20)default '',mc4 varchar(20)default '',mc5
varchar(20)default '',parentid varchar(20),levelnum int)DEFAULT
CHARSET=UTF8;

运行结果正常。

经查找资料,如下说的很清楚
mysql> show variables like
"%character%"; show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name |
Value |
+--------------------------+----------------------------+
|
character_set_client | latin1 |
| character_set_connection | latin1 |
|
character_set_database | latin1 |
| character_set_results | latin1 |
|
character_set_server | latin1 |
| character_set_system | utf8 |
|
character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+
7 rows in set
(0.00 sec)

+----------------------+-------------------+
|
Variable_name | Value |
+----------------------+-------------------+
|
collation_connection | latin1_swedish_ci |
| collation_database |
latin1_swedish_ci |
| collation_server | latin1_swedish_ci |

+----------------------+-------------------+
3 rows in set (0.00 sec)


fix it with
set collation_database=utf8_general_ci;

set collation_connection=utf8_general_ci;
set
collation_server=utf8_general_ci;

MySQL的Illegal mix of collationsy异常原因和解决方法的更多相关文章

  1. Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  2. Java并发编程:Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  3. 【转】Java ConcurrentModificationException异常原因和解决方法

    原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...

  4. 9、Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  5. MySQL 实例空间使用率过高的原因和解决方法

    用户在使用 MySQL 实例时,会遇到空间使用告警甚至超过实例限额被锁定的情况.在 RDS 控制台的实例基本信息中,即会出现如下信息: 本文将介绍造成空间使用率过高的常见原因及其相应的解决方法.对于M ...

  6. mysql 报Row size too large 65535 原因与解决方法

    报错信息:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535 ...

  7. (转)Java ConcurrentModificationException异常原因和解决方法

    转载自:http://www.cnblogs.com/dolphin0520/p/3933551.html 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会 ...

  8. java.util.ConcurrentModificationException异常原因及解决方法

    在java语言中,ArrayList是一个很常用的类,在编程中经常要对ArrayList进行删除操作,在使用remove方法对ArrayList进行删除操作时,报java.util.Concurren ...

  9. Java并发--ConcurrentModificationException(并发修改异常)异常原因和解决方法

    在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常.下面我们就来讨论 ...

随机推荐

  1. Xampp配置本地域名及常见错误解决

    本地域名配置 1.计算机-->C盘-->Windows-->System32-->drivers-->etc-->hosts 127.0.0.1       loc ...

  2. [E::hts_idx_push] NO_COOR reads not in a single block at the end 10 -1

    在分析转录组数据时,用bowtie2比对生成的bam文件,下一步call peak使用m6Aviewer,需要bam文件的index文件.所以我直接敲命令 samtools index xx.bam ...

  3. java多线程(八)-死锁问题和java多线程总结

    为了防止对共享受限资源的争夺,我们可以通过synchronized等方式来加锁,这个时候该线程就处于阻塞状态,设想这样一种情况,线程A等着线程B完成后才能执行,而线程B又等着线程C,而线程C又等着线程 ...

  4. qt中建立图片资源文件

    qt中如果你要添加图片资源文件我们需要执行以下步骤: (1)先找好一张图片,这里就不多说了,网上资源很多. (2)把我们找好的文件统一放到一个文件夹,然后拉到工程文件所在的文件夹下 (3)在qt中新建 ...

  5. Android WebView默认GONE出现的问题记录

    前段时间重构一批相似度80%以上的项目[真搞不懂前人们是怎么忍受十几个类似的应用一直CVU的,冗余代码和资源达到40%以上] 其中需要抽出一个公共的带WebView的Activity基类,由于脑残测试 ...

  6. Protobuf使用(一)

    Protobuf使用(一)   前言:   最近由于接手一个支付的项目,他们那边的网络请求和数据解析都与我平常接触的项目不同,数据请求由于保密暂时不能说,但是数据解析用的是Protobuf,于是我就顺 ...

  7. 一句话理解字符编码(Unicode ,UTF8,UTF16)

    Unicode和ASCII码属于同一级别的,都是字符集,字符集规定从1到这个字符集的最大范围每个序号都各表示什么意思.比如ASCII字符集中序号65表示"A". 那接下来的UTF8 ...

  8. 解决api 跨域 webconfig添加节点

    <system.webServer><httpProtocol><customHeaders><add name="Access-Control-A ...

  9. 前端工程化webpack(一)

    webpack 的基本用法   1.app.js 引入模块 import moduleLog from './module.js' //引入moduleLog从./module.js 2.module ...

  10. npm package.json文件解读

    每个Nodejs项目的根目录下面,一般都会有一个package.json文件.该文件可以由npm init生成,定义了项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据). pa ...