MyBatis Batch Update Leads to PSQLException "Too many updateresults were returned"
От | Chris Dole |
---|---|
Тема | MyBatis Batch Update Leads to PSQLException "Too many updateresults were returned" |
Дата | |
Msg-id | 1519766361988-0.post@n3.nabble.com обсуждение исходный текст |
Ответы |
Re: MyBatis Batch Update Leads to PSQLException "Too many updateresults were returned"
Re: MyBatis Batch Update Leads to PSQLException "Too many updateresults were returned" |
Список | pgsql-jdbc |
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. @Bean public SqlSessionTemplate getSqlSessionTemplate() { SqlSessionFactory sessionFactory = null; try { sessionFactory = getMktPersistDesignSqlSessionFactoryBean().getObject(); sessionFactory.getConfiguration().setDefaultExecutorType(ExecutorType.BATCH); } catch (Exception e) { String message = PersistLogUtil.error(logger, "Failed to create SqlSessionTemplate"); throw new RuntimeException(message, e); } SqlSessionTemplate template = new SqlSessionTemplate(sessionFactory); return template; } Thanks for any help. -- Sent from: http://www.postgresql-archive.org/PostgreSQL-jdbc-f2168246.html
В списке pgsql-jdbc по дате отправления: