Spring事务在没有readOnly = true标志

时间:2017-10-10 05:59:31

标签: java spring postgresql transactions

该应用程序是使用Spring Boot,Spring Data,Hibernate,Hikari连接池,PostgreSQL开发的。 在我们的开发环境中使用默认的Postgre安装它可以正常工作。但是我们在客户环境中遇到安装问题。 错误是:

  

org.postgresql.util.PSQLException:错误:无法执行nextval()   只读事务

不幸的是,我们无法访问客户网络中的Postgre配置来检查交易默认值。但是pgsql和PgAdmin的简单更新查询可以使用相同的凭据。 我删除了所有" readOnly = true"来自@Transactional注释 - 没有运气,同样的错误。添加了

dataSource.setConnectionInitSql("SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE");

到Hikari数据源配置。也没有运气。 这两个PostgreSQL安装之间的另一个区别是:

  • 客户使用9.5(我们使用9.4)
  • 客户禁用访问公共架构,我们必须配置 hibernate属性中的另一个模式。

偶尔会出现错误,同样的方法可以很好地运行几次但是会抛出此异常。这让我觉得某些池化连接处于只读状态,而其他则不是。但是为什么Spring没有明确地将每个新事务标记为读写,或者JDBC级别无法做到这一点?请帮忙调试。

0 个答案:

没有答案