4

私は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 で実行されます。

これを解決する方法はありますか?ありがとう。

4

2 に答える 2