Heim > Datenbank > MySQL-Tutorial > mysql版本升级引发的问题_MySQL

mysql版本升级引发的问题_MySQL

WBOY
Freigeben: 2016-06-01 13:34:34
Original
870 Leute haben es durchsucht

bitsCN.com

mysql版本升级引发的问题

 

问题描述:

1.  ibatis 中 mysql语句 

Java代码  

    

        SELECT d.qid,GROUP_CONCAT(epq.qid) qids  

        FROM table1 d,table2 epq   

        WHERE d.qid=#qid#  

        AND   d.pid=epq.pid  

        GROUP BY d.checkPid  

        LIMIT 1  

 

 

2. service层代码 

Java代码  

Map tempMap = dao.getQids(qid);  

if(tempMap != null){  

    byte[] arr = (byte[])tempMap.get("qids");  

    String tempQids = new String(arr);  

    tempMap.put("qids", tempQids);  

    this.qids.add(tempMap);  

}     

 

3.  在测试服务器上测试时,发现一直报2中刷红部分一直报 类型转换错误

 

4.  采用了N种办法

      (1) 本地与svn代码

      (2) 对比 测试 与 正式的代码 

      (3) 对比测试与正式数据的差异性

实在找不到原因

 

      (4) 开始怀疑 mysql驱动

      (5) mysql数据库版本

       最终竟然 锁定在mysql数据库版本

       由于数据库(测试库) 上个月刚采用了 mysql 5.5 ,而正式上还没有发布,仍旧采用的mysql 5.1,真正原因。

 

如下原因:

当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来,

否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串,

而是byte[]。

该问题当你在SQLyog等一些工具中是体现不出来的,所以很难发现。

select group_concat(ipaddress) from t_ip 返回逗号隔开的串

select group_concat(id) from t_ip 返回byte[]

select group_concat(CAST(id as char)) from t_dep 返回逗号隔开的串

select group_concat(Convert(id , char)) from t_dep 返回逗号隔开的串

bitsCN.com
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage