MySQL的Illegal mix of collationsy异常原因和解决方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL的Illegal mix of collationsy异常原因和解决方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2635字,纯文字阅读大概需要4分钟。
内容图文
今天在使用数据库临时表的游标时,发现了这个异常。
经查找资料,最终结果。这里和大家分享一下。 字符集问题还是一定要统一的才是最简单的。
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异常原因和解决方法
标签:可见 res sql gen int click tis sel varchar
本文系统来源:https://www.cnblogs.com/lxwphp/p/8329186.html
内容总结
以上是互联网集市为您收集整理的MySQL的Illegal mix of collationsy异常原因和解决方法全部内容,希望文章能够帮你解决MySQL的Illegal mix of collationsy异常原因和解决方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。