1. 程式人生 > >DB2 SERVER從10.5.8升級到10.5.10之後,weblogic報錯 java.lang.NumberFormatException: For input string: "A"

DB2 SERVER從10.5.8升級到10.5.10之後,weblogic報錯 java.lang.NumberFormatException: For input string: "A"

問題描述: 
DB2伺服器從10.5.8升級到10.5.10之後,weblogic報錯 java.lang.NumberFormatException: For input string: "A"
java.lang.NumberFormatException: For input string: "A"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at com.ibm.db2.jcc.c.md.<init>(md.java:64)
    at com.ibm.db2.jcc.a.f.<init>(f.java:44)
    at com.ibm.db2.jcc.a.b.cb(b.java:2003)
    at com.ibm.db2.jcc.c.p.a(p.java:3507)
    at com.ibm.db2.jcc.a.b.a(b.java:645)
    at com.ibm.db2.jcc.a.b.<init>(b.java:354)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:165)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:187)

問題解決:
懷疑是weblogic自帶的db2 jdbc driver有問題,位於目錄~/domains/audit_domain/lib下,名子db2jcc.jar,於是從IBM官網上下載了一個新的驅動,代替了原來的,問題解決。


原因分析:

1. 可以看到db2 伺服器上,10.5.10以下的版本, modification level都是數字,而10.5.10就變成了字母A
[email protected]:~> db2level
DB21085I  This instance or install (instance name, where applicable: "db2tst1")
uses "64" bits and DB2 code release "SQL10058

" with level identifier
"0609010E".
Informational tokens are "DB2 v10.5.0.8", "s160901", "IP23993", and Fix Pack
"8".
Product is installed at "/db2/software/10.5.8".

[email protected]:~> db2level
DB21085I  This instance or install (instance name, where applicable: "db2tst2")
uses "64" bits and DB2 code release "SQL10059

" with level identifier
"060A010E".
Informational tokens are "DB2 v10.5.0.9", "s170908", "IP24028", and Fix Pack
"9".
Product is installed at "/db2/software/10.5.9".

[email protected]:~> db2level
DB21085I  This instance or install (instance name, where applicable: "db2tst3")
uses "64" bits and DB2 code release "SQL1005A" with level identifier
"060B010E".
Informational tokens are "DB2 v10.5.0.10", "s180615", "IP24053", and Fix Pack
"10".
Product is installed at "/db2/software/10.5.10".

2. 如果client(weblogic)的db2 jdbc driver版本是2.X的,那麼它就不能識別SERVER上這種帶字母的modification level。因此會報出上面的錯誤,在連結中有說明
http://www-01.ibm.com/support/docview.wss?uid=swg21990017

This happens when old DB2 JDBC driver version (2.X) cannot retrieve DB2 server fixpack version information higher than fixpack 9. (Fixpack 10 : 'A', Fixpack 11 : 'B')
The affected JDBC driver versions are 2.X which are included in DB2 server version 8.

3. 根據連結中的命令java -cp /your_path/db2jcc.jar com.ibm.db2.jcc.DB2Jcc  -version,查看了weblogic的db2 jdbc 驅動版本,發現果然是2.X,因此在升級驅動版本之後,問題解決了。