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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • XXE攻防

    XXE攻防目录前言什么是XXE脑图什么是XMLXML基本语法文档类型定义(DTD)实体XXE攻击分类检测XXE存在任意文件读取SSRF攻击执行系统命令探测内网端口BlindXXE漏洞靶机实测Vulnhub搭建任意文件读取获取flag靶机实测XXE-lab防御方式使用开发语言提供的禁用外部实体的方法过滤用户提交的XML数据参考前言什么是XXEXXE(XMLExternalEntityInjection)即XML外部实体注入,攻击者通过向服务器注入指定的XML实体内容,从而让服务器按照指定的配置进行执行,

    2022年5月24日
    42
  • 卡方线性趋势检验_SPSS:趋势卡方检验

    卡方线性趋势检验_SPSS:趋势卡方检验SPSS:趋势卡方检验毕业季接近尾声,通过答辩的各位同学们即将开始新的旅程。回顾论文点滴,想必既有心酸又充满欣慰。回顾毕业生咨询论文写作得到一个启示与各位分享:论文完成的过程也是还原临床研究的过程,论文收集资料后进行统计分析时,可以用的统计方法有很多,至于用什么统计方法,决定于临床研究的目的。举个例子:某同学收集到一些数据:近五年某医院胃镜报告提示胃溃疡的男性、女性患者人数,根据数据得到类似下面的…

    2022年5月13日
    54
  • 基础乐理

    基础乐理

    2022年3月13日
    41
  • obligatory category_cglib为什么比jdk快

    obligatory category_cglib为什么比jdk快在一些系统代码中,随处可见的BeanCopier(源于org.springframework.cglib.beans),它主要用在将PO与DTO互转。一些人在惊叹它的高性能的同时,不曾了解它的实现原理(它不使用的反射)!它基于CGLIB代理,CGLIB(CodeGenerationLibrary)是高效的代码生成包,底层依靠ASM(开源的Java字节码编辑类库)操作字节码实现。JDK动态代…

    2025年9月15日
    5
  • Bluez java_Bluez相关的各种tools的使用

    Bluez java_Bluez相关的各种tools的使用7.1BccmdBccmd是用来和CSR的芯片进行BCCMD(Bluecorecommandprotocol)通讯的一个工具。BCCMD并非蓝牙协议栈的标准,而是CSR芯片的专属协议Bccmd的调用格式为:bccmd[-t][-d][]Tansport类型包括HCIUSBBCSPH4等,常用的估计就是HCI和BCSP两种。需要注意一下他们的使用场合:HCI是…

    2025年5月22日
    3
  • UCI数据集整理(附论文常用数据集)

    UCI数据集整理(附论文常用数据集)摘要:UCI数据集作为标准测试数据集经常出现在许多机器学习的论文中,为了更方便使用这些数据集有必要对其进行整理,这里整理了论文中经常出现的数据集,并详细介绍如何使用MATLAB将数据集文件整理成自己需要的格式以及如何使用数据集文件。要点如下UCI数据集介绍用程序整理数据集如何使用数据集文件点击跳转至UCI数据集下载页1.前言UCI数据集是一个常用的机器…

    2022年6月28日
    44

发表回复

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

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