vel*_*tis 8 db2 jdbc squirrel-sql
我现在已经尝试使用 SQuirreL 连接到外部 DB2 数据库 2 天。我总是收到错误:
[jcc][t4][2030][11211][3.58.82] A communication error occurred during operations
on the connection's underlying socket, socket input stream, or socket output
stream. Error location: Reply.fill(). Message: Insufficient data.
ERRORCODE=-4499, SQLSTATE=08001
Run Code Online (Sandbox Code Playgroud)
我正在使用 IBM DB2 通用 JDBC 驱动程序 v9.7 FP5。我也尝试过 v9.5。
一件事是 DB2 通过 Putty 建立隧道。服务器运行Linux和IBM DB2 v7.1。我用的是Win7x64。
我在网上浏览了许多涵盖此错误的论坛主题,但没有一个真正对我有用。(即iReport 到 DB2 连接 ERRORCODE=-4499,SQLSTATE=08001)
首先,我认为这可能与未正确建立隧道的端口有关。但我从 Putty 会话配置中删除了端口,并发生了不同的错误。
问题的堆栈跟踪:
com.ibm.db2.jcc.am.io: [jcc][t4][2030][11211][3.58.82] A communication error
occurred during operations on the connection's underlying socket, socket input
stream, or socket output stream. Error location: Reply.fill(). Message:
Insufficient data. ERRORCODE=-4499, SQLSTATE=08001
at com.ibm.db2.jcc.am.ed.a(ed.java:319)
at com.ibm.db2.jcc.t4.a.a(a.java:416)
at com.ibm.db2.jcc.t4.a.a(a.java:411)
at com.ibm.db2.jcc.t4.cb.b(cb.java:227)
at com.ibm.db2.jcc.t4.cb.c(cb.java:249)
at com.ibm.db2.jcc.t4.cb.c(cb.java:360)
at com.ibm.db2.jcc.t4.cb.v(cb.java:1145)
at com.ibm.db2.jcc.t4.db.a(db.java:42)
at com.ibm.db2.jcc.t4.b.m(b.java:1238)
at com.ibm.db2.jcc.t4.b.b(b.java:1112)
at com.ibm.db2.jcc.t4.b.c(b.java:700)
at com.ibm.db2.jcc.t4.b.b(b.java:686)
at com.ibm.db2.jcc.t4.b.a(b.java:367)
at com.ibm.db2.jcc.t4.b.<init>(b.java:307)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:456)
Run Code Online (Sandbox Code Playgroud)
我最好的猜测过去是,现在仍然是 JDBC 通用驱动程序不向后兼容 DB2 v7.1。
它可以在另一台装有 32 位 XP 的开发机器(同事)上运行。我尝试让它在不同的 32 位 XP 上运行,但出现相同的结果。
有人能至少描述一下这种异常现象的根源吗?
http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14779629 这不可能是防火墙或隧道错误。已成功使用 telnet 打开通往正确端口的隧道。
您需要找到并使用 DB2 7.2 或 DB2 7.1 客户端代码(也称为 DB2 Client Application Enabler)。在 DB2 8.1 之前,IBM 使用一种不同的、依赖于平台的协议(称为 DB2RA)来进行客户端和服务器之间的通信。DB2 8.1 切换到标准 DRDA 协议。在特定配置中,DB2 8.x 客户端可以与 DB2 7.x 服务器通信。
或者,如果您使用的是 Java 应用程序,则可以尝试查找/使用 Type 3 JDBC 驱动程序 (COM.ibm.db2.jdbc.net.DB2Driver)。该驱动程序是无客户端的(它具有 3 层架构,因为它需要在数据库服务器上运行所谓的“JDBC Applet 服务器”。您可以通过查找名为 的进程来查看它是否在您的 Linux 机器上运行db2jd
。一般来说,此进程将显示为,例如,db2jd 6789
其中 6789 是 applet 服务器正在侦听的端口号。如果您没有看到此进程,您可以通过执行命令来启动它(作为 DB2 实例所有者)db2jstrt
。
归档时间: |
|
查看次数: |
35115 次 |
最近记录: |