与 db2 jdbc 的连接错误

Posted

技术标签:

【中文标题】与 db2 jdbc 的连接错误【英文标题】:connection error with db2 jdbc 【发布时间】:2016-06-23 20:49:16 【问题描述】:

谁能提供有关如何诊断下面列出的错误的线索?注意,我可以通过 DB2 connect 连接到这个 DB2 实例,但不能通过 jdbc。

   org.apache.openjpa.persistence.PersistenceException: Unable to open a test 

connection to the given database. JDBC url = jdbc:db2://dxxx_xxx.xxx.com:5000/XXXXX:deferPrepares=false, username = NNNNN. Terminating connection pool. Original Exception: ------
    com.ibm.db2.jcc.am.SqlSyntaxErrorException: [jcc][10165][10051][3.63.75] Invalid database URL syntax: jdbc:db2:/dxxx_xxx.xxx.com:5000/XXXXX:deferPrepares=false. ERRORCODE=-4461, SQLSTATE=42815
        at com.ibm.db2.jcc.am.fd.a(fd.java:679)
        at com.ibm.db2.jcc.am.fd.a(fd.java:60)
        at com.ibm.db2.jcc.am.fd.a(fd.java:85)
        at com.ibm.db2.jcc.DB2Driver.tokenizeURLProperties(DB2Driver.java:911)
        at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:408)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:256)
        at com.jolbox.bonecp.BoneCP.<init>(BoneCP.java:305)
        at com.jolbox.bonecp.BoneCPDataSource.maybeInit(BoneCPDataSource.java:150)

【问题讨论】:

我错过了一个 ;在连接字符串的末尾。 【参考方案1】:

错误信息是不言自明的:

无效的数据库 URL 语法

URL 中不能有任何空格,键值对用分号而不是逗号分隔。请注意,您也必须在最后一个值后面加上分号。

jdbc:db2://dxxx_xxx.xxx.com:5000/XXXXX:deferPrepares=false;username=NNNNN;

详情可见in the manual。

【讨论】:

【参考方案2】:

查看从 DB2 文档中获取的信息(添加了下面的参考链接)。

消息文本: text-from-getMessage

说明:指定的值无效或超出范围。

用户响应:调用 SQLException.getMessage 以检索有关问题的具体信息。

SQLSTATE: 42815

参考:https://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.java.doc/src/tpc/imjcc_rjvjcsqc.html

【讨论】:

以上是关于与 db2 jdbc 的连接错误的主要内容,如果未能解决你的问题,请参考以下文章

通过 SQOOP 连接到 DB2 时出现连接管理器错误

与 DB2 的 JDBC 连接?

Cognos 10.2.2 as400 iSeries DB2 jdbc 连接

与 DB2 和 jdbc 的连接?

Java通过jdbc连接DB2能使用with as( select ...吗

为啥@jdbc 查询因连接超时而失败?