开发者社区> 问答> 正文

java.sql.SQLException: Error retrieving next row

我使用druid管理hive jdbc的连接池,然后查询一个sql大概返回的数据量有70W+,出现检索下一行异常,异常信息也不够详细,HiveQueryResultSet 388行刚好也就是异常抛出异常的代码,没法定位到具体HiveQueryResultSet next()方法那行代码出错。 请问下这个是不是跟量大有关系。下边是全部的异常栈信息。。

java.lang.NullPointerException org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [sql 语句]; SQL state [null]; error code [0]; Error retrieving next row; nested exception is java.sql.SQLException: Error retrieving next row at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:416) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:471) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:481) at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:521) at com..report.dao.spark.HiveOrSparkDao.querySqlFormHive(HiveOrSparkDao.java:44) at com..report.Thread.DataExportThread.run(DataExportThread.java:47) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.sql.SQLException: Error retrieving next row at org.apache.hive.jdbc.HiveQueryResultSet.next(HiveQueryResultSet.java:388) at com.alibaba.druid.pool.DruidPooledResultSet.next(DruidPooledResultSet.java:69) at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:92) at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:60) at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:460) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:405) ... 8 more Caused by: java.lang.NullPointerException

原提问者GitHub用户Danier-Evens

展开
收起
山海行 2023-07-05 21:10:27 1796 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    当使用JDBC驱动程序从数据库中检索数据时,如果出现“java.sql.SQLException: Error retrieving next row”错误,通常是由以下原因之一引起的:

    数据库连接中断
    当数据库连接中断时,JDBC驱动程序无法从数据库中检索数据,因此会出现“java.sql.SQLException: Error retrieving next row”错误。这可能是由于网络问题、数据库服务器故障或其他原因导致的。

    数据库查询超时
    如果查询执行时间过长,可能会超出JDBC驱动程序的默认查询超时时间。这将导致JDBC驱动程序无法从数据库中检索数据,并出现“java.sql.SQLException: Error retrieving next row”错误。

    您可以通过在JDBC URL中设置查询超时时间来解决此问题。例如,对于MySQL数据库,您可以使用以下JDBC URL:

    Copy
    jdbc:mysql://localhost:3306/mydatabase?connectTimeout=5000&socketTimeout=5000
    在上面的JDBC URL中,connectTimeout和socketTimeout参数分别设置连接超时时间和查询超时时间。

    数据库查询错误
    如果您的SQL查询包含语法错误、逻辑错误或其他错误,可能会导致JDBC驱动程序无法从数据库中检索数据,并出现“java.sql.SQLException: Error retrieving next row”错误。请检查您的SQL查询以查找任何错误或异常。

    2023-07-30 10:05:40
    赞同 展开评论 打赏
  • 这个看起来像是hive jdbc的异常,和druid无关

    原回答者GitHub用户wenshao

    2023-07-06 11:54:13
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载