Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 不能在事务中间更改事务只读属性_Spring_Postgresql_Spring Jdbc_Bonecp - Fatal编程技术网

Spring 不能在事务中间更改事务只读属性

Spring 不能在事务中间更改事务只读属性,spring,postgresql,spring-jdbc,bonecp,Spring,Postgresql,Spring Jdbc,Bonecp,我正在使用带有Postgresql和SpringJDBCTemplate的BoneCP。当JdbcTemplate执行查询并尝试关闭连接时,会出现以下异常: org.postgresql.util.PSQLException:无法将事务更改为只读 事务中间的属性。在 org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:725) 在 com.jolbox.bonecp.Conne

我正在使用带有Postgresql和SpringJDBCTemplate的BoneCP。当JdbcTemplate执行查询并尝试关闭连接时,会出现以下异常:

org.postgresql.util.PSQLException:无法将事务更改为只读 事务中间的属性。在 org.postgresql.jdbc2.AbstractJdbc2Connection.setReadOnly(AbstractJdbc2Connection.java:725) 在 com.jolbox.bonecp.ConnectionHandle.setReadOnly(ConnectionHandle.java:1279) 在 ConnectionHandle.(ConnectionHandle.java:254) 在 com.jolbox.bonecp.ConnectionHandle.recreateConnectionHandle(ConnectionHandle.java:273) 位于com.jolbox.bonecp.ConnectionHandle.close(ConnectionHandle.java:476) 在 org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:341) 在 org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:328) 在 org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:294) 在 org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:411) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456) 在 org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:464) 在 org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:472) 在 org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:477)

由于无法关闭连接,打开的连接达到最大连接数,应用程序将变得无响应

我没有设置任何与交易相关的属性。因此,事务设置应该是默认设置。我怎样才能解决这个问题

依赖项和配置:

bonecp 0.8.0-rc1 postgresql 9.2-1002.jdbc4 spring jdbc 3.2.1.1版本

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"        destroy-method="close">         <property name="driverClass" value="org.postgresql.Driver" />       <property name="jdbcUrl" value="jdbc:postgresql://127.0.0.1/mkayman" />         <property name="username" value="mkayman" />        <property name="password" value="" />       <property name="idleConnectionTestPeriodInMinutes" value="5" />         <property name="idleMaxAgeInMinutes" value="30" />      <property name="maxConnectionsPerPartition" value="5" />        <property name="minConnectionsPerPartition" value="2" />        <property name="partitionCount" value="2" />        <property name="acquireIncrement" value="1" />      <property name="statementsCacheSize" value="100" />     </bean>

我今天遇到了这个问题。您可能缺少boneCP的一个必需依赖项


我错过了SLF4J库,收到了同样的消息。检查此处是否存在依赖项:

我遇到了相同的问题,通过执行以下两个步骤可以解决此问题:

  • 通过添加以下语句来设置隔离级别: config.setDefaultTransactionIsolation(“读取未提交”)

  • 在关闭之前提交每个事务


我不确定是哪一个解决了问题,或者两者是否都有必要。

我遇到了完全相同的问题,添加依赖项并没有解决这个问题。无论如何,从错误来看,问题似乎不是找不到它想要引用的类,而是关于连接池配置的问题。设置
readuncommitted
听起来不是个好主意,因为在读取其他事务正在写入的数据时,可能会得到随机结果,也许它甚至会被回滚。也许它在你的特殊情况下对你有效,但我一般不推荐它。或者至少警告人们它的作用