Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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
Java 选择上的ORA-08177_Java_Spring_Oracle - Fatal编程技术网

Java 选择上的ORA-08177

Java 选择上的ORA-08177,java,spring,oracle,Java,Spring,Oracle,是否可能select语句中出现错误ORA-08177 --- Cause: java.sql.SQLException: ORA-08177: can't serialize access for this transaction at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201) at com.ibatis.sq

是否可能select语句中出现错误ORA-08177

    --- Cause: java.sql.SQLException: ORA-08177: can't serialize access for this transaction
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201) 
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139) 
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:578) 
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:552) 
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118) 
at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:298) 
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209) at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249) 
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296)

根据文档,ORA-08177只能由可序列化事务引起。这意味着可序列化事务尝试修改的行在可序列化事务开始后被另一个事务修改。读提交隔离级别也会出现类似的情况,但在这种情况下,数据库会自动且静默地重新启动整个SQL语句,并且不会发生错误


所以我猜你的事务毕竟是可序列化的。我相信,默认隔离级别可以在连接中设置,也可以在连接属性中设置。你确定你已经检查了所有可能的地方吗?通过在连接上调用getTransactionIsolation(),您应该能够轻松地验证这一点。

问题在于我没有试图修改,而只是读取数据(select语句)。我的事务是可序列化的。请查看这是否有助于您-否,它是关于删除/更新查询而不是选择查询