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"  (Dave Cramer <pg@fastcrypt.com>)
Re: MyBatis Batch Update Leads to PSQLException "Too many updateresults were returned"  (Chris Dole <chris.dole@sas.com>)
Список 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 по дате отправления:

Предыдущее
От: Vladimir Sitnikov
Дата:
Сообщение: Re: JDBC driver returns different version strings on Ubuntu and CentOS
Следующее
От: "cathryn"
Дата:
Сообщение: Errors encountered when running JDBC testcases from OptionalTestSuite against vPG10.2