我正在使用 mysql 5.1.18 连接器运行 mysql 5.5。
一个简单的样式查询
select * from my_table where column_a in ('aaa','bbb',...) and column b=1;
从java应用程序中执行。该查询返回包含 25k 行、每行 8 列的结果集。 while 读取 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。有趣的是,同一个元数据对象在上面的几行中与其他 getter 一起被多次调用,并且不会抛出任何异常。
顺便说一句,上面的查询直接在mysql中运行是没有问题的。
应用程序在aws中运行。
有什么想法如何解决这个问题吗?
谢谢。