无效的操作结果集已关闭errorcode 4470 sqlstate null - DB2数据提取

时间:2014-08-26 01:15:52

标签: sql db2

我正在运行一个非常简单的查询,并尝试将结果提取到文本文件中。整个查询基本上就是下面的内容,我从一张桌子中选择所有内容,其中一条标准将数据限制为一个月的价值。它提取了大约1.2 gig之后会出现此错误。除了提取较小的日期范围之外,还有什么方法可以解决这个问题吗?我试图提取几年的数据,所以如果我一次只能得到它几天就需要大量的手工工作。

我目前正在使用DB2查询工具的免费试用 - Razor SQL如果有所作为,我可以购买不同的软件,如果它会有所帮助。我正在尝试使用IBM的工具但由于某种原因它在下载过程中冻结,所以我仍然在努力。我已经搜索过这个错误,但我看到的一切似乎都比我正在做的要复杂得多,我无法判断它是否适用。提前谢谢。

select *
from MyTable
where date_col between date '2014-01-01' and date '2014-01-31'

5 个答案:

答案 0 :(得分:5)

我偶然发现了这个错误,发现它与db2jcc.jar(类型4)驱动程序有关。

摘录:如果结果集中没有项目(或以开头为单位),则结果集会自动关闭,因此会关闭异常。建议是在应用程序中处理它,也许在我的情况下,我开始检查if(rs.next())但是否则,有一个解决方法。查看下面的源代码链接,了解如何将某些属性设置为数据源并避免异常。

资料来源: "Invalid operation: result set is closed" error with Data Server Driver for JDBC

答案 1 :(得分:1)

在我的情况下,我错过了WAS中的一些属性,添加 allowNextOnExhaustedResultSet 后问题得到解决。

  

1.登录WebSphere Application Server管理控制台。

     

2.选择资源> JDBC>数据源> Application Center DataSource名称>自定义属性,然后单击“新建”。

     

3.在Name字段中,输入allowNextOnExhaustedResultSet。

     

4.在“值”字段中,键入1。

     

5.将类型更改为java.lang.Integer。

     

6.单击“确定”。

有时您还需要检查是否存在 resultSetHoldability 属性。详情请参阅here

答案 2 :(得分:0)

使用Integer类型创建属性,它对我有用:

allowNextOnExhaustedResultSet

答案 3 :(得分:0)

我在WAS 7上遇到了同样的问题,所以我必须在管理控制台上添加和更改一些。

此TeamWorksRuntimeException异常应通过应用APAR JR50863来修复,APAR JR50863可在BPM V8.5.5之上使用或包含在BPM V8.5更新包6中。 对于APAR无法解决问题的情况,请尝试以下解决方法:

  1. 登录WebSphere Application Server管理控制台
  2. 选择资源> JDBC>数据源> DataSource名称(TeamWorksDB)>自定义属性,然后单击新建
  3. 在“名称”字段中,输入downgradeHoldCursorsUnderXa
  4. 在“值”字段中,键入true
  5. 将类型更改为java.lang.Boolean
  6. 单击“确定”保存更改
  7. 选择自定义属性resultSetHoldability
  8. 在“值”字段中,键入1
  9. 单击“确定”保存更改
  10. 答案来源:https://developer.ibm.com/answers/questions/194821/invalid-operation-result-set-is-closed-errorcode-4/

答案 4 :(得分:0)

如果连接池失去了与Db2的会话,则重新启动应用程序可能会解决该问题。如果使用Tomcat,则“ testonBorrow”的连接池属性可能会重新建立与Db2的连接。