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

时间:2017-01-18 21:38:01

标签: java postgresql spring-batch

我一直在使用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 :(得分:0)

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