2016-04-01 51 views
0

と私が一緒にまたはI場合は任意のレコードを挿入せずにthis-UnsupportedCharsetException:Cp1027は、DB2 JDBCドライバー

CREATE TABLE scma.timetest(
      T_TYPE VARCHAR(8), 
      T_DATE TIMESTAMP 
      ); 

などのJDBCクライアントからメインフレーム上のIBM DB2のタイプTimestampの列を持つ単純なデータベーステーブルを作成しています私はタイムスタンプ型の列を持っていない場合、私は以下のexception-

java.nio.charset.UnsupportedCharsetException: Cp1027 

を取得し終わるselect * from scma.timetest;は、すべてが正常に動作します。私は-Dfile.encoding=UTF-8でJDBCクライアントを開始しようとしましたが、無駄です。 Javaプログラムからも同じことを試みましたが、同じエラーが発生します。

hereと同じ問題ではありませんが、私はClassNotFoundExceptionを取得しません。何らかのポインタが間違っている可能性があります。 z/OSの

レガシーDB2は、多くの場合、文字データのために(もCP1027として知られている)EBCDICエンコーディングを使用します。それは、コメントから、ここでこの移動

Exception in thread "main" java.nio.charset.UnsupportedCharsetException: Cp1027 
    at java.nio.charset.Charset.forName(Charset.java:531) 
    at com.ibm.db2.jcc.am.t.<init>(t.java:13) 
    at com.ibm.db2.jcc.am.s.a(s.java:12) 
    at com.ibm.db2.jcc.am.o.a(o.java:444) 
    at com.ibm.db2.jcc.t4.cc.a(cc.java:2412) 
    at com.ibm.db2.jcc.t4.cb.a(cb.java:3513) 
    at com.ibm.db2.jcc.t4.cb.a(cb.java:2006) 
    at com.ibm.db2.jcc.t4.cb.a(cb.java:1931) 
    at com.ibm.db2.jcc.t4.cb.m(cb.java:765) 
    at com.ibm.db2.jcc.t4.cb.i(cb.java:253) 
    at com.ibm.db2.jcc.t4.cb.c(cb.java:55) 
    at com.ibm.db2.jcc.t4.q.c(q.java:44) 
    at com.ibm.db2.jcc.t4.rb.j(rb.java:147) 
    at com.ibm.db2.jcc.am.mn.kb(mn.java:2107) 
    at com.ibm.db2.jcc.am.mn.a(mn.java:3099) 
    at com.ibm.db2.jcc.am.mn.a(mn.java:686) 
    at com.ibm.db2.jcc.am.mn.executeQuery(mn.java:670) 
+0

ランタイムJavaクラスパス – Rehman

+0

@Rehmanにrt.jarが明示的に参照されていることを確認してください。 – User2709

+0

どのOSを使用していますか? – Rehman

答えて

3

をhelps-場合はここで完全な例外があります。また、DB2は内部的に別々に保管されていますが、DB2はタイム・スタンプ値を文字列としてクライアントに送信すると考えています。私はあなたが使用しているJavaランタイムはCP1027をサポートしていないと考えているので、EBCDICデータをクライアント上で必要なものに変換する方法はわかりません。なぜVARCHARの値がOKで来るのか説明できません。

DB2エンコーディングの詳細については、check the manualを参照してください。

あなたがそうするJavaによってサポートされる別のエンコーディングを使用してテーブルを作成するために、DB2を強制することができます。

CREATE TABLE scma.timetest(...) CCSID UNICODE 

もう一つの選択肢は、EBCDIC(CP1027)エンコーディングをサポートする別のJavaランタイムを使用するかもしれません。いくつかのDB2クライアント・パッケージに付属するIBM JDKが適しています。

あなた(メインフレームのシステムプログラマーではないが)は、データベース(サブシステム)のデフォルトのコード体系を設定することもできます。