I have a fairly simple implementation of a batch update via the MyBatis functionality.
Postgres version (via RDS on Amazon Web Services): 9.6.6 JDBC driver version: 9.4
The error manifests as follows:
DataIntegrityViolationException Root cause: BatchUpdateException getNextException: PSQLException - Too many update results were returned.
Has anyone else run into this? I have searched far and wide for an explanation (including here) but have not found an answer yet.
I assume this error is coming up from the JDBC driver?
The curious thing is that the update seems to work (as in database side-effects) but it still throws an exception afterward.
Here is a fragment of the MyBatis mapper XML file for the update. The failure can happen for as few as two or three updates, and it can succeed with hundreds.
<update id="update" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" separator=";"> UPDATE public.vid_event_timing SET mark_delete = 1 WHERE visitor_id=#{item.vid} AND timed_node_id=#{item.timedNodeId} AND conditional_node_id= #{item.conditionalNodeId} </foreach> </update>
The MyBatis/Spring configuration includes this session factory bean, set to ExecutorType.BATCH by default.