私はmysql 5.1.18コネクタでmysql 5.5を実行しています。スタイルの単純なクエリ
select * from my_table where column_a in ('aaa','bbb',...) and column b=1;
Java アプリケーション内から実行されます。クエリは、25,000 行、それぞれに 8 列の結果セットを返します。whileループで結果を読みながら
while(rs.next())
{
MyObject c= new MyObject();
c.setA(rs.getString("A"));
c.setB(rs.getString("B"));
c.setC(rs.getString("C"));
...
}
通常は最初のループ中に次の例外がスローされますが、同じ行にはスローされません。
java.lang.NullPointerException
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5720)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5570)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5610)
ResultSetImpl.java:5720 のソース コードを確認したところ、次のように表示されました。
switch (metadata.getSQLType())
メタデータの場所
Field metadata = this.fields[internalColumnIndex];
getSQLType は、int を返すロジックのない getter です。興味深いのは、同じメタデータ オブジェクトが他のゲッターを使用して数行上で何度も呼び出され、例外をスローしないことです。
ところで、mysql 内で直接実行されている間は、上記のクエリに問題はありません。アプリケーションは aws で実行されます。
これを解決する方法はありますか?ありがとう。