Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jdbc 使用SQuirreL“连接到IBM DB2”;Reply.fill()。信息:数据不足。错误代码=-4499,SQLSTATE=08001“;_Jdbc_Db2_Squirrel Sql - Fatal编程技术网

Jdbc 使用SQuirreL“连接到IBM DB2”;Reply.fill()。信息:数据不足。错误代码=-4499,SQLSTATE=08001“;

Jdbc 使用SQuirreL“连接到IBM DB2”;Reply.fill()。信息:数据不足。错误代码=-4499,SQLSTATE=08001“;,jdbc,db2,squirrel-sql,Jdbc,Db2,Squirrel Sql,现在,我已经尝试了两天使用SQuirreL连接到外部DB2数据库。我总是会出错: [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: Ins

现在,我已经尝试了两天使用SQuirreL连接到外部DB2数据库。我总是会出错:

[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
我使用的是IBMDB2UniversalJDBC驱动程序v9.7FP5。我也试过v9.5

一件事是DB2是用油灰挖洞的。服务器使用IBMDB2V7.1运行linux。我正在使用Win7x64

我在网上浏览了很多论坛主题,都涉及到了这个错误,但没有一个真正对我有用。(即)

首先,我认为这可能与未正确挖掘的端口有关。但是我从Putty会话conf中删除了端口,并出现了不同的错误

问题的堆栈跟踪:

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)
com.ibm.db2.jcc.am.io:[jcc][t4][2030][11211][3.58.82]通信错误
在连接的基础套接字、套接字输入的操作过程中发生
流,或套接字输出流。错误位置:Reply.fill()。信息:
数据不足。ERRORCODE=-4499,SQLSTATE=08001
com.ibm.db2.jcc.am.ed.a(ed.java:319)
com.ibm.db2.jcc.t4.a.a(a.java:416)
com.ibm.db2.jcc.t4.a.a(a.java:411)
com.ibm.db2.jcc.t4.cb.b(cb.java:227)
com.ibm.db2.jcc.t4.cb.c(cb.java:249)
com.ibm.db2.jcc.t4.cb.c(cb.java:360)
com.ibm.db2.jcc.t4.cb.v(cb.java:1145)
位于com.ibm.db2.jcc.t4.db.a(db.java:42)
com.ibm.db2.jcc.t4.b.m(b.java:1238)
位于com.ibm.db2.jcc.t4.b.b(b.java:1112)
位于com.ibm.db2.jcc.t4.b.c(b.java:700)
位于com.ibm.db2.jcc.t4.b.b(b.java:686)
com.ibm.db2.jcc.t4.b.a(b.java:367)
com.ibm.db2.jcc.t4.b.(b.java:307)
位于com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214)
com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:456)
我最好的猜测是JDBC通用驱动程序与DB2V7.1不向后兼容

它在另一台32位XP的开发机器(同事)上工作。我曾尝试将其应用于不同的32位XP,但结果是相同的

至少有人能描述一下这种异常现象的根源吗

编辑
这不能是防火墙或隧道错误。使用telnet成功打开了正确端口的隧道。

您需要找到并使用DB2 7.2或DB2 7.1客户机代码(也称为DB2客户机应用程序启用码)。在DB28.1之前,IBM使用一种不同的、依赖于平台的协议,称为DB2RA,用于客户机和服务器之间的通信。DB28.1切换到标准DRDA协议。在特定配置中,DB28.x客户机可以与DB27.x服务器通信


或者,如果您使用的是Java应用程序,则可以尝试查找/使用类型3 JDBC驱动程序(COM.ibm.db2.JDBC.net.DB2Driver)。这个驱动程序是无客户端的(它有一个三层架构,因为它需要一个所谓的“JDBCApplet服务器”要在数据库服务器上运行。您可以通过查找名为
db2jd
的进程来查看它是否在linux设备上运行。通常,此进程将显示为,例如,
db2jd 6789
,其中6789是小程序服务器正在侦听的端口号。如果您没有看到此进程,则可以启动它(作为DB2实例所有者)执行
db2jstrt
命令。

另一种可能性:您可能需要重新启动计算机。在我的情况下,这对我来说是有效的。我在安装了DB2 10.5的特殊版本后出现了此错误

  • 要获得更多诊断信息,可以使用以下命令获取IBM JDBC驱动程序版本:
    java com.IBM.db2.jcc.DB2Jcc-version
  • 最后是这个

您确定Linux服务器正在Linux上运行DB2 7.1吗?它已经失去支持近10年了!如果这是准确的,那么错误很可能是因为DB2 9.7(或9.5)客户端与DB2 7.1不兼容。我可以确认它正在运行DB2 v7.1。这台服务器非常旧(从~2003年起).据我所知,在系统早期使用DB2的要求是由客户机设定的。现在它已经流畅地运行了“一段时间”但是,在客户愿意支付升级其组件的费用之前,需要进行一些维护工作。我正在尝试为DB开发环境,但迄今为止没有成功。因此,您认为驱动程序根本就不是那么通用吗?IBM表示,特定的客户机将支持服务器2个版本,1个版本。因此,9.7客户机应该支持DB29.5和9.1,以及DB210.1。“通用”方面更多地围绕一个客户机支持DB2、Informix和Derby这一事实之所以取这个名字,是因为该驱动程序同时支持类型2和类型4 JDBC连接。有一条评论:类型3驱动程序在DB2 8.1中已被弃用。因此,这只应在必要时用作bandaid。谢谢!我终于设法在web上找到了可用的旧类型3驱动程序。=)