首页 文章

如何处理太大的Spring Batch步执行上下文?

提问于
浏览
2

我一直在使用Spring Batch,到目前为止一切运行良好 . 最近,我们遇到了与步骤执行上下文相关的问题 . 错误如下:

在job vodPlacementJob中为步骤generatePlacementSupplement遇到了保存批处理元数据的错误 . 此作业现在处于未知状态,不应重新启动 . org.springframework.dao.DataIntegrityViolationException:PreparedStatementCallback; SQL [UPDATE BATCH_STEP_EXECUTION_CONTEXT SET SHORT_CONTEXT =?,SERIALIZED_CONTEXT =? WHERE STEP_EXECUTION_ID =?];错误:类型为oid的输入语法无效

我已经尝试将Spring Batch执行上下文表更改为TEXT数据类型,并将VARCHAR限制更改为10k而不是2500.这些方法似乎都没有解决问题 . 我认为这是一个空间问题,因为我们传递了相当多的参数,但增加更多的空间并没有解决它 .

离开Postgres数据库并使用内存解决方案是最好的方法吗?

1 回答

  • 0

    我想您会发现Spring Batch源代码实际上知道列大小(具有它们的常量)并将截断数据以适合列大小 . 甚至可以使用一些方法来覆盖默认值 . 是否覆盖这些东西是个好主意我会让你决定,但我相信这是可能的 . (所以我说你不仅要改变数据库列,还要搞乱Spring Batch源代码,或者至少调用一些API来告诉它你增加了DB列的大小 . )

相关问题