问题描述:
1. ibatis 中 mysql语句
<select id="getQids" parameterClass="int" resultClass="hashMap"> 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 </select>
2. service层代码
Map<String,Object> 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 返回逗号隔开的串
总结:
mysql 5.1版本 仍然 采用上面刷红的部分,但mysql 5.5,已经修复了这个bug.
相关推荐
.NET C# MySQL各版本驱动是连接MySQL数据库的重要组件,它允许C#开发者在.NET环境中编写代码,实现对MySQL数据的存取操作。MySQL Connector/Net是Oracle官方提供的.NET框架下的MySQL驱动程序,支持多种.NET应用程序...
- **连接问题**:某些老版本的MySQL驱动可能不支持`utf8mb4`,需升级至最新版。 4. **预防措施** - **统一编码标准**:在整个项目中,从数据库到前端,统一使用UTF-8编码,避免因编码不一致引发的问题。 - **...
4. **更新或升级MySQL版本**:确保使用的MySQL版本是最新的稳定版,或者至少不是过于陈旧的版本。有时,较新版本的MySQL会包含修复特定问题的补丁。 5. **详细错误报告**:按照日志中的提示,将详细的错误报告提交...
这在升级或迁移数据库时可能会引发问题,特别是在不同版本的MySQL服务器之间操作时。本文将深入探讨这个问题,并提供解决方案。 错误代码1293,"Incorrect table definition; there can be only one TIMESTAMP ...
MySQL数据库的版本升级是一个常见的操作,特别是在为了获取新特性、性能优化或安全更新时。从5.6.28版本升级到8.0.11版本可能会遇到一些兼容性问题,尤其是在部署项目时。本文将详细阐述在升级过程中可能遇到的问题...
这有助于保持系统的整体兼容性和稳定性,特别是对于那些需要与不同MySQL版本交互的应用程序来说。在升级或降级MySQL服务器版本时,这个兼容库尤其重要,因为它可以帮助平滑过渡,避免因版本不匹配而引发的问题。 ...
升级`mysqlbinlog`到与MySQL服务器相匹配的版本可以解决这个问题,如将3.3版本升级到3.4版本。 3. **功能不兼容**: 新版本的MySQL可能会引入新的特性,而旧版`mysqlbinlog`可能不支持这些特性。例如,某些binlog...
除此之外,他还讨论了连接闪断问题,例如在机器维护或版本升级时的切换问题,以及如何通过引入proxy,实现连接保持和事务外切换。他还探讨了雪崩问题,即超时重试引发的问题,并提出了监控+kill、源码解决方法等解决...
MySQL 4.0 到 MySQL 5.4(或4.1)的升级过程中,一个关键环节是处理字符集问题,因为从这个版本开始,MySQL引入了对多种字符集的支持,包括GBK和UTF8,这可能导致原有的数据在迁移后显示异常。以下是详细步骤和相关...
MySQL数据库在进行系统升级、迁移或者版本切换时,可能会遇到表结构不一致的问题,这将导致数据无法正确读取或写入,甚至可能引发错误。为了解决这个问题,"Mysql数据库表结构差异性对比工具"应运而生。这款工具能够...
在这种情况下,即使新版本的MySQL数据库已经安装并运行,如果Node.js应用依然使用旧版的mysql模块,就会导致认证失败,进而引发连接问题。 为了解决这个问题,可以采取以下几种方案: 1. 升级mysql模块 升级到...
MySQL 与 PostgreSQL 是两种广泛应用的关系型数据库管理系统,它们在最新的版本中都在不断地增强自身功能,以适应日益复杂的数据处理需求。MySQL 8 和 PostgreSQL 10 的发布标志着两者之间的竞争进一步加剧。 首先...
例如,'2006/11/24 09:14:00'和'2006/11/2409:14:00'在4.0中可能都被接受,但在5.0中,只有前者会被正确处理,后者可能会引发问题。 总的来说,从MySQL 4.0升级到5.0的过程需要仔细处理时间类型和数值类型的变化,...
MySQL 5.7 版本升级后,用户可能会遇到与`GROUP BY`查询相关的兼容性问题,这主要是由于新版本中默认启用的`ONLY_FULL_GROUP_BY` SQL模式引起的。此模式要求在`GROUP BY`子句中列出所有的非聚合列,以确保数据的正确...
在较新的MySQL版本(如8.0.12)中,推荐使用`com.mysql.cj.jdbc.Driver`而非`com.mysql.jdbc.Driver`作为驱动类。这是因为旧的驱动已被弃用,新驱动通过SPI自动注册,手动加载通常不再必要。要解决这个问题,确保在...
这样的全面比较,使得在数据库升级或迁移时,能够准确找出潜在的问题,避免因细微差异引发的运行错误。 其次,同步功能是这款工具的一大亮点。用户可以选择性地同步数据库对象,或者一键同步整个数据库,以实现数据...
MySQL InnoDB 实现了一种基于多版本并发控制(MVCC)的协议,这种协议的最大优点在于能够使读操作无需加锁,从而减少了读写之间的冲突,提高了数据库的并发性能。MVCC将读操作分为两种类型: 1. **快照读(Snapshot...