DB2数据库连接成功但查询连接报错的解决方案
本帖最后由 加菲喵 于 2015-9-10 16:10 编辑
数据连接 >> 数据连接FAQ >> DB2数据库连接成功但查询连接报错的解决方案
DB2数据库连接成功但查询连接报错的解决方案
最后更新日期: 2015-8-11
描述
原因分析
解决方案
1.描述
FineReport8.0定义JDBC连接DB2测试连接连接成功
25729
新建查询却显示连接失败(以新建存储过程为例)
25731
并且在日志中还有如下报错:
2015-08-10 13:34:21
警告: 必需的字符转换器不可用。 ERRORCODE=-4220, SQLSTATE=null
at com.ibm.db2.jcc.a.yc.a(yc.java:55)
at com.ibm.db2.jcc.a.yc.a(yc.java:119)
at com.ibm.db2.jcc.a.dc.a(dc.java:1788)
at com.ibm.db2.jcc.a.dc.n(dc.java:496)
at com.ibm.db2.jcc.a.dc.F(dc.java:1262)
at com.ibm.db2.jcc.a.mk.d(mk.java:938)
at com.ibm.db2.jcc.a.mk.getString(mk.java:916)
at com.fr.third.org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:213)
at com.fr.data.core.db.dialect.AbstractDialect.getSchemas(Unknown Source)
at com.fr.dav.LocalEnv.getTableSchema(Unknown Source)
at com.fr.data.core.DataCoreUtils.getDatabaseSchema(Unknown Source)
...........................
2.原因分析
产生的该现象的原因是因为%Finereport_HOME%\WebReport\WEB-INF\lib下的db2jcc.jar与DB2的版本不符,测试链接只是测试连接的网络连通是否正常,
查询中涉及到数据库表预览取数等计算,不同的版本需要不同的db2jcc.jar驱动。
3.解决方案
访问http://www-01.ibm.com/support/docview.wss?uid=swg21363866,DB2 JDBC Driver Versions and Downloads中心,可以根据DB2的版本下载对应驱动
25736
注:
第一,如果安装了db2数据库,jar包可以从安装路径找到,但是如果是盗版的db2,只能连接自己在机器上的db2,如果db2服务器在别的机器上,就会连接失败,而且有时间限制。
第二,db2版本问题,8和9两个版本不能通用一个版本的jar包,否则也会出现问题。建议使用正版的DB2数据库10.1,请支持正版。