mysql版本升級引發(fā)的問題
問題描述:
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
if(tempMap != null){
byte[] arr = (byte[])tempMap.get("qids");
String tempQids = new String(arr);
tempMap.put("qids", tempQids);
this.qids.add(tempMap);
}
3. 在測試服務(wù)器上測試時,發(fā)現(xiàn)一直報2中刷紅部分一直報 類型轉(zhuǎn)換錯誤
4. 采用了N種辦法
(1) 本地與svn代碼
(2) 對比 測試 與 正式的代碼
(3) 對比測試與正式數(shù)據(jù)的差異性
實在找不到原因
(4) 開始懷疑 mysql驅(qū)動
(5) mysql數(shù)據(jù)庫版本
最終竟然 鎖定在mysql數(shù)據(jù)庫版本
由于數(shù)據(jù)庫(測試庫) 上個月剛采用了 mysql 5.5 ,而正式上還沒有發(fā)布,仍舊采用的mysql 5.1,真正原因。
如下原因:
當(dāng)你用group_concat的時候請注意,連接起來的字段如果是int型,一定要轉(zhuǎn)換成char再拼起來,
否則在你執(zhí)行后(ExecuteScalar或者其它任何執(zhí)行SQL返回結(jié)果的方法)返回的將不是一個逗號隔開的串,
而是byte[]。
該問題當(dāng)你在SQLyog等一些工具中是體現(xiàn)不出來的,所以很難發(fā)現(xiàn)。
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.comCopyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2
違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務(wù)所王興未律師提供法律服務(wù)