无法在只读事务中执行更新

问题描述

我们使用 Postgresql 作为数据库。应用使用spring库,事务由spring管理。事务注释被正确使用,在需要它作为只读的地方,以及它与写能力一起使用的地方。但是在日志中我们偶尔会看到异常

2020-12-30 11:39:13.513 [jmsContainer-8] ERROR o.h.e.jdbc.spi.sqlExceptionHelper - ERROR: cannot execute nextval() in a read-only transaction
2020-12-30 11:39:13.515 [jmsContainer-8] ERROR o.s.t.s.TransactionSynchronizationUtils - TransactionSynchronization.afterCompletion threw exception
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not extract ResultSet
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147)
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)
        at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:162)
        at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:780)
        at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:758)
        at jdk.internal.reflect.GeneratedMethodAccessor2794.invoke(UnkNown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:301)
        at com.sun.proxy.$Proxy226.persist(UnkNown Source)

通过 pg_bouncer 和 pool_mode=sessionserver_reset_query=disCARD ALL 提供与 Postgresql 的连接。

我们尝试重新启动 pg_bouncer,尽管认情况下某些连接设置为只读并保持活动状态,但它没有帮助。 有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...