さとまも談義|テクノロジーと体験とアートと

テクノロジーとビジネスと人の関係性にずっと興味があります。アートやダイバーシティのキーワードも含めて、世界がどう変わっていくか、変えていけるかをお酒を飲みつつ考えるブログ

単体テストにおけるエラー

デバッグ中のエラー

com.ibm.db2.jcc.am.SqlException: [jcc][10103][10941][3.57.82] 更新に対してメソッド executeQuery を使用できません。 ERRORCODE=-4476, SQLSTATE=null

どうやらSELECT文がきちんと認識できない場合のエラーのようだ。
Universal driverでは、空白除去などをしてくれないため、指定時に注意が必要。
今回の場合だと、FROMの前に半角空白が入っていなかったのがマズかったようだ。


DB2: PreparedStatementでのSQL内の全角空白について
http://www-01.ibm.com/support/docview.wss?uid=std3e05de566507a92da49257469002a8ef7

SQLCODE=-204, SQLSTATE=42704

対応したところ、SQLは通ったような反応。
今度は「SQLCODE=-204, SQLSTATE=42704」ときたもんだ。
テーブルが未定義、つまり見つかりませんよ、とのこと。

本当に?? って確かにいない……ので再作成。
これはお粗末なミス。

java.io.CharConversionException をキャッチしました

文字コードエンコーディングが異なるようですね……。
アプリケーション側でShift_JISにしているんだけど、そのせいか(DB2はUTF8)。
もうちょっと調べてから、UTF8にするべきか検討しよう。

【結論】
DBのテストデータがUTF-8でなかったために、不具合を起こしていた模様。
テストデータを再作成したところ、問題なく稼働した(サーブレットJSPでは、Shift_JISを使用)。

ここまでで、なんとか動いた。