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