从DBeaver连接DB2 LUW时遇SqlException连接错误求助
DBeaver连接DB2 LUW时
com.ibm.db2.jcc.am.SqlException错误排查方案 问题描述
通过DBeaver连接DB2 LUW时触发com.ibm.db2.jcc.am.SqlException连接错误,相关信息如下:
- 弹窗错误详情:
SqlException com.ibm.db2.jcc.am.SqlException - DBeaver日志错误堆栈:
2023-11-16 19:13:38.091 - SqlException com.ibm.db2.jcc.am.SqlException at com.ibm.db2.jcc.am.b7.a(b7.java:815) at com.ibm.db2.jcc.am.b7.a(b7.java:66) at com.ibm.db2.jcc.am.b7.a(b7.java:140) at com.ibm.db2.jcc.am.Connection.completeSqlca(Connection.java:5269) at com.ibm.db2.jcc.t4.z.q(z.java:861) at com.ibm.db2.jcc.t4.z.n(z.java:670) at com.ibm.db2.jcc.t4.z.a(z.java:474) at com.ibm.db2.jcc.t4.z.a(z.java:123) at com.ibm.db2.jcc.t4.b.c(b.java:1427) at com.ibm.db2.jcc.t4.b.b(b.java:1298) at com.ibm.db2.jcc.t4.b.b(b.java:849) at com.ibm.db2.jcc.t4.b.a(b.java:820) at com.ibm.db2.jcc.t4.b.a(b.java:441) at com.ibm.db2.jcc.t4.b.a(b.java:414) at com.ibm.db2.jcc.t4.b.<init>(b.java:352) at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:233) at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:200) at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:471) at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:113) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.lambda$0(JDBCDataSource.java:185) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.lambda$1(JDBCDataSource.java:204) at org.jkiss.dbeaver.utils.SecurityManagerUtils.wrapDriverActions(SecurityManagerUtils.java:94) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:202) at org.jkiss.dbeaver.ext.db2.model.DB2DataSource.openConnection(DB2DataSource.java:273) at org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext.connect(JDBCExecutionContext.java:103) at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.initializeMainContext(JDBCRemoteInstance.java:100) at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.<init>(JDBCRemoteInstance.java:59) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.initializeRemoteInstance(JDBCDataSource.java:112) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.<init>(JDBCDataSource.java:100) at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.<init>(JDBCDataSource.java:92) at org.jkiss.dbeaver.ext.db2.model.DB2DataSource.<init>(DB2DataSource.java:128) at org.jkiss.dbeaver.ext.db2.DB2DataSourceProvider.openDataSource(DB2DataSourceProvider.java:98) at org.jkiss.dbeaver.registry.DataSourceDescriptor.openDataSource(DataSourceDescriptor.java:981) at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:918) at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70) at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) 2023-11-16 19:13:41.437 - Service 'org.jkiss.dbeaver.runtime.ui.UIServiceSecurity' not found 2023-11-16 19:14:00.845 - Service 'org.jkiss.dbeaver.runtime.ui.UIServiceSecurity' not found
已尝试的无效操作
- 重装Java SE
- 重装Java JDK 21
- 安装IBM Data Server Driver Package (DS Driver)
- 重装DBeaver
- 重装DB2
- 检查服务文件中的端口号
可行排查/解决步骤
1. 验证DB2服务与端口可用性
- 执行
db2start确认DB2实例已正常启动 - 用
netstat -ano | findstr <端口号>(Windows)或netstat -tulpn | grep <端口号>(Linux)检查端口是否处于监听状态 - 使用DB2自带工具
db2cmd执行db2 connect to <数据库名> user <用户名> using <密码>,验证数据库本地连接是否正常
2. 匹配JDBC驱动与DB2版本
- 确保DBeaver使用的JCC驱动版本与DB2 LUW版本兼容(例如DB2 11.5需对应4.2.x及以上版本驱动)
- 在DBeaver连接设置中,手动指定已安装的IBM DS Driver路径,避免内置驱动版本不匹配问题
3. 检查连接参数与网络配置
- 确认主机地址、端口、数据库名、用户名密码完全正确
- 若启用SSL连接,暂时关闭SSL尝试连接,排除加密层配置问题
- 关闭防火墙或添加DB2端口的入站规则,排除网络拦截
4. 调整Java版本兼容性
- DB2 JCC驱动对高版本Java支持有限,建议切换至JDK 8或JDK 11(DB2官方推荐稳定版本)
- 修改DBeaver启动配置文件
dbeaver.ini,指定兼容JDK路径,示例:-vm C:\Program Files\Java\jdk1.8.0_381\bin\javaw.exe
5. 检查DB2权限与实例配置
- 执行
GRANT CONNECT ON DATABASE TO USER <用户名>,确保用户拥有远程连接权限 - 运行
db2 get dbm cfg | findstr SVCENAME,确认SVCENAME参数对应正确端口 - 检查DB2实例的
dbm cfg中REMOTE_AUTH参数设置,确保允许远程认证
内容的提问来源于stack exchange,提问作者J R
相关产品推荐
相关产品推荐

