代码如下:
Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection conn = DriverManager.getConnection("jdbc:db2://localhost:50000/sample","db2admin","12345678");
第二句时就报这个错误:
com.ibm.db2.jcc.am.yn: [jcc][t4][2030][11211][3.57.82] 在对连接的底层 socket、socket input stream 或 socket output stream 执行操作期间发生通信错误。错误位置:Reply.fill()。消息:数据不足。 ERRORCODE=-4499, SQLSTATE=08001
at com.ibm.db2.jcc.am.bd.a(bd.java:319)
at com.ibm.db2.jcc.t4.a.a(a.java:365)
at com.ibm.db2.jcc.t4.a.a(a.java:360)
at com.ibm.db2.jcc.t4.ab.b(ab.java:222)
at com.ibm.db2.jcc.t4.ab.c(ab.java:243)
at com.ibm.db2.jcc.t4.ab.c(ab.java:354)
at com.ibm.db2.jcc.t4.ab.v(ab.java:1139)
at com.ibm.db2.jcc.t4.bb.a(bb.java:42)
at com.ibm.db2.jcc.t4.b.m(b.java:1240)
at com.ibm.db2.jcc.t4.b.b(b.java:1114)
at com.ibm.db2.jcc.t4.b.c(b.java:701)
at com.ibm.db2.jcc.t4.b.b(b.java:687)
at com.ibm.db2.jcc.t4.b.a(b.java:374)
at com.ibm.db2.jcc.t4.b.<init>(b.java:310)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:224)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at lc.JDBCTest.main(JDBCTest.java:24)
服务里的db2所有的东西我都已启动,我在命令行或者控制中心用这个密码和用户名都可以连接,也可以正常使用,就是连JSBC就出错,我装的是DB29.7,jar包是从安装路径里拷出来的。。。
卡在这一步啥都不能继续,折磨死了,请高手指点一下。。。
------解决方案--------------------------------------------------------
license文件拷了吗?db2jcc_license_cu.jar
------解决方案--------------------------------------------------------
问题比较复杂,先看看是不是license问题
------解决方案--------------------------------------------------------
db2 ERRORCODE=-4499, SQLSTATE=08001,参考解决办法
a、 需要使用db2set DB2COMM=TCPIP,才可以使用jdbc type v4来连接
b、 若此时仍旧报错,检查”db2 get dbm cfg |grep SVCENAME”,查看TCP/IP服务名称和/etc/services中定义的db2服务名称是否匹配,windows下是“WINDOWS\systemtem32\driver\etc\services”,若不匹配,使用”db2 “update dbm cfg using SVCENAME serviceName”, ”db2 terminate”,然后重启db2服务即可