首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ResultSetImpl抛出NullPointerException

问ResultSetImpl抛出NullPointerException
EN

Stack Overflow用户
提问于 2012-05-13 18:14:09
回答 2查看 2.9K关注 0票数 4

我正在运行带有mysql 5.1.18连接器的MySQL5.5。一个简单的风格查询

select * from my_table where column_a in ('aaa','bbb',...) and column b=1;

从java应用程序内执行。该查询返回25k行的结果集,每行8列。当读取while循环中的结果时

代码语言:javascript
复制
while(rs.next())
{
    MyObject c= new MyObject();  
    c.setA(rs.getString("A"));
    c.setB(rs.getString("B"));
    c.setC(rs.getString("C"));
    ...
}

通常在第一个循环期间抛出以下异常,但不会在同一行中抛出:

代码语言:javascript
复制
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的源代码,我看到了以下内容:

代码语言:javascript
复制
switch (metadata.getSQLType())

元数据的位置

代码语言:javascript
复制
Field metadata = this.fields[internalColumnIndex];

而getSQLType是一个返回int的无逻辑的getter。有趣的是,相同的元数据对象被其他getter调用了很多次,并且没有抛出异常。

顺便说一句,当直接在mysql中运行时,上面的查询没有问题。应用程序在aws中运行。

有什么办法解决这个问题吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-03-13 07:51:07

我遇到了这个问题,使用Spring Data CrudRepository从运行在AWS RDS上的MySql数据库中检索结果流,使用一个中等复杂的查询。

它还会在大约30k行之后的非确定性行抛出。

我通过用@Transactional注释调用方法解决了这个问题。

尽管您没有使用JPA,但是为您的数据库访问设置一个事务可能会对您的问题有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2016-01-21 15:29:29

根据我的经验,这个错误是由于试图同时从同一个表中读取/写入时被锁定的表造成的。您需要为每个请求添加一个池,或者为MySQL的每个操作之间添加一些等待时间。

相关答案也是:Getting java.sql.SQLException: Operation not allowed after ResultSet closed

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10570929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档