DB2:有关"ERRORCODE=-4499, SQLSTATE=08001"详解

An error occurred while establishing the connection:
Long Message:
[jcc][t4][2030][11211][3.52.95] 在对连接的底层 socket、socket input stream 或 socket output stream 执行操作期间
发生通信错误。错误位置:Reply.fill()。消息:数据不足。 ERRORCODE=-4499, SQLSTATE=08001

背景:正常安装完DB2数据库后,通过dbvisualizer软件访问本地数据库报错(如图一)

   图1     


   图2

解决办法:

一、网上普遍的几种排查错误原因
     1.DB2关键服务是否正常启动    WIN->SERVICES->检查"DB2-DB2COPY1-DB2"服务是否启动
     2.端口号是否冲突             WIN->CMD->键入"netstat -nao",查看是否有其他服务占用50000端口(默认)
     3.所访问数据库是否存在       DB2 COMMAND->db2 list db directory
     4.检查防火墙设置,是否阻碍连接访问(这一点我不太确定指的是用户防火墙还是DB的防火墙,欢迎指点)
     5.GUI问题,可视化图形界面与数据库版本不匹配(这一点我不太同意)
二、如果尝试方法一仍不能解决问题,可以有如下补救措施
     前提:通过DB2 COMMAND->db2 list db directory   可见你所期望的数据库    
     Administrative Tools->Data Sources(ODBC)->User DSN中add一条记录指向DB2-DB2COPY1-DB2->可见DataBase名称为你所期望数据库->Finish。命名该条记录为"SAMPLE"
     再次建立连接(如图2),Driver方式改为"JDBC/ODBC Bridge"、Data Source名为刚刚创建的Data Source名称,即"SAMPLE"
     通过此办法亦可连接访问本地数据库,作者怀疑是因为DB驱动问题而不能直接Driver方式为"DB2"直接连接
三、偶然遇到的解决办法(我所采纳的解决办法),原理不解,问题却解
     某一天:重新安装了一遍DB2,操作图一还是报错,放弃了。
     次日:经过将近长达一周的斗争,本来已经放弃了,但是今天开机后偶然查看了一下DBLog发现一个之前没有检查过的文件夹"C:\ProgramData"
     通过与同事文件的比对发现在"C:\ProgramData\IBM\DB2\DB2COPY1\DB2\ctrl"文件夹下缺少了一个名为"online.add"的文件,遂将其copy到本地的该路径下,重启服务,操作图一,发现可以正常使用dbvisualizer。

希望能帮助到大家,欢迎大家的批评与指点。

你可能感兴趣的:(数据库,db2)