MySQL的Illegal mix of collationsy异常原因和解决方法

MySQL的Illegal mix of collationsy异常原因和解决方法

 

原创 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;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113606.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 常用解压与压缩命令「建议收藏」

    Ubuntu 常用解压与压缩命令「建议收藏」Ubuntu常用解压与压缩命令.tar文件#仅打包,并非压缩tar-xvfFileName.tar#解包tar-cvfFileName.tarDirName#将DirName和其下所有文件(夹)打包.gz文件#.gzgunzipFileName.gz#解压1gzip-dFileName.gz#解压2gzipFil…

    2022年5月10日
    65
  • 算法:记忆化搜索「建议收藏」

    算法:记忆化搜索「建议收藏」概述记忆化搜索是一种典型的空间换时间的思想。记忆化搜索的典型应用场景是可能经过不同路径转移到相同状态的dfs问题。更明确地说,当我们需要在有层次结构的图(不是树,即当前层的不同节点可能转移到下一层的相同节点)中自上而下地进行dfs搜索时,大概率我们都可以通过记忆化搜索的技巧降低时间复杂度。例子:青蛙过河题目描述一只青蛙想要过河。假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表stones(用单

    2022年7月26日
    13
  • linux终端运行w3m,W3M – 一款终端浏览器

    linux终端运行w3m,W3M – 一款终端浏览器w3m 是一个基于文本的网页浏览器 支持多种操作系统 在命令行终端可以很好的支持中文 即使在没有鼠标支持的情况下也可以检查网页的输出 本文列出常用的快捷键 如果你浏览的关注点是文字 而网页上又有很多干扰你的广告 在终端下使用 w3m 浏览将是一个很好的选择 w3m 可以自动为你去除哪些无聊的广告 专注于文字本身 而且超链接的跳转也很方便 看下文本浏览效果 示例如下 以浏览 https linux265

    2025年8月25日
    3
  • 敏感词过滤算法:前缀树算法

    敏感词过滤算法:前缀树算法背景平时我们在逛贴吧、牛客网的时候,我们经常可以看到一些形如“***”的符号,通过上下文,我们也可以很容易猜到这些词原来是骂人的话,只是被系统和谐了。那么这是如何实现的呢?作为普通人,我们最先想到的一种办法就是把所有敏感串存入一个列表中,然后用户每发一条内容后台就把该内容与敏感串列表的每一项进行匹配,然后把匹配的字符进行和谐。显然这样的效率是很低的。非常影响性能,那么我们有没有其他的算法…

    2022年6月6日
    45
  • MBus协议详解(三)[通俗易懂]

    MBus协议详解(三)[通俗易懂]这节主要集中在MBus协议物理层和数据链路层的硬件实现上,其关键点包括:1、由主到从传输的时候电压的调制;2、由从到主传输的时候电流脉冲的调制;3、总线短路保护。1、由主到从传输的时候电压的调制如上图所示,信号在-27V、0V、+15V上进行调制,采用2个MOS管P201、P202,+15V电压通过稳压器降压到+12V。由主到从传输数据的时…

    2022年10月15日
    4
  • oracle保留小数位数

    oracle保留小数位数公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2)),只是格式不是很工整,对格式要求不严谨的情况下使用round即可公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2)),只是格式不是很工整,对格式要求不严谨的情况下使用round即可.个人认为比较方便的一种selectdecode(n_jg,0,’0.00′,trim(to_char(n_jg,’999

    2022年7月24日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号