SQuirreLを使用して外部DB2データベースに接続するために2日間試しました。私はいつもエラーが発生します:
[jcc][t4][2030][11211][3.58.82] A communication error occurred during operations
on the connection's underlying socket, socket input stream, or socket output
stream. Error location: Reply.fill(). Message: Insufficient data.
ERRORCODE=-4499, SQLSTATE=08001
IBM DB2 Universal JDBC ドライバー v9.7 FP5 を使用しています。v9.5も試しました。
1 つのことは、DB2 が Putty でトンネリングされていることです。サーバーは IBM DB2 v7.1 で Linux を実行します。Win7x64を使用しています。
このエラーをカバーする Web 上の多くのフォーラム トピックに出くわしましたが、実際にはどれもうまくいきませんでした。(つまり、iReport から DB2 への接続 ERRORCODE=-4499、SQLSTATE=08001 )
最初に、これは正しくトンネリングされていないポートに関連している可能性があると考えました。しかし、Putty セッション conf からポートを削除したところ、別のエラーが発生しました。
問題のスタック トレース:
com.ibm.db2.jcc.am.io: [jcc][t4][2030][11211][3.58.82] A communication error
occurred during operations on the connection's underlying socket, socket input
stream, or socket output stream. Error location: Reply.fill(). Message:
Insufficient data. ERRORCODE=-4499, SQLSTATE=08001
at com.ibm.db2.jcc.am.ed.a(ed.java:319)
at com.ibm.db2.jcc.t4.a.a(a.java:416)
at com.ibm.db2.jcc.t4.a.a(a.java:411)
at com.ibm.db2.jcc.t4.cb.b(cb.java:227)
at com.ibm.db2.jcc.t4.cb.c(cb.java:249)
at com.ibm.db2.jcc.t4.cb.c(cb.java:360)
at com.ibm.db2.jcc.t4.cb.v(cb.java:1145)
at com.ibm.db2.jcc.t4.db.a(db.java:42)
at com.ibm.db2.jcc.t4.b.m(b.java:1238)
at com.ibm.db2.jcc.t4.b.b(b.java:1112)
at com.ibm.db2.jcc.t4.b.c(b.java:700)
at com.ibm.db2.jcc.t4.b.b(b.java:686)
at com.ibm.db2.jcc.t4.b.a(b.java:367)
at com.ibm.db2.jcc.t4.b.<init>(b.java:307)
at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214)
at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:456)
私の最善の推測では、JDBC ユニバーサル ドライバーは DB2 v7.1 と下位互換性がありません。
32ビットXPを搭載した他の開発マシン(同僚)で動作します。別の 32 ビット XP で動作させようとしましたが、同じ結果が発生します。
少なくともこの異常の根源を説明できる人はいますか?
編集
http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14779629 これは、ファイアウォールまたはトンネリング エラーではありません。Telnet でポートを修正するためのトンネルを正常に開きました。