连接DB2报错:ERRORCODE=-4499, SQLSTATE=08004

时间:2024-03-29 21:12:47
前言:
    前几天用SQuirrel SQL Client (松鼠客户端)连接DB2报错,具体信息如下:
java.util.concurrent.ExecutionException: java.lang.RuntimeException: com.ibm.db2.jcc.a.pm: [jcc][t4][2057][11264][4.0.100] The application server rejected establishment of the connection.
An attempt was made to access a database,XXXDB , which was either not found or does not support transactions. ERRORCODE=-4499, SQLSTATE=08004
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)


思路:

    百度or谷歌错误代码:ERRORCODE=-4499, SQLSTATE=08004


过程:
    百度的结果...无力吐槽,每一个有用的。
连接DB2报错:ERRORCODE=-4499, SQLSTATE=08004


    没办法,只能靠谷歌了,google的结果:
连接DB2报错:ERRORCODE=-4499, SQLSTATE=08004

真TM的感动,第一个就是答案,附上link:https://www-304.ibm.com/support/docview.wss?uid=swg21443723
里面告诉我起因是:
Using DCS DB alias or local alias name of the database in the connection string will cause this error.


其实就是数据库的名字有点问题,可能是使用了别名照成的,需要去看看真实的名字。可以采用下面这个命令查看:
SELECT CURRENT SERVER FROM SYSIBM.SYSDUMMY1;
或者
db2 list db directory


先用putty直接访问数据库所在的linux服务器,然后切换用户,查寻所有数据库(DB2相关命令可以别人的博客,比如:http://blog.csdn.net/fuwencaho/article/details/20629567)
# su - db2inst1

$ db2 list db directory


 System Database Directory


 Number of entries in the directory = 5


Database 1 entry:


 Database alias                       = XXX_DB_1
 Database name                        = XXX_DB_1
 Local database directory             = /home/db2inst1
 Database release level               = 10.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =
.....


我以前错误的URL是:jdbc:db2://1.1.1.1:50000/XXXDB
根据上面搜出的结果,正确的应该是:jdbc:db2://1.1.1.1:50000/XXX_DB_1.