I just upgrade to new jdbc driver from classes12.jar to ojdbc7.jar
My app threw an exception when was running with ojdbc7.jar:
java.sql.SQLException: Could not commit with auto-commit set on
at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4443)
at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4490)
at oracle.jdbc.driver.T4CConnection.doSetAutoCommit(T4CConnection.java:943)
at oracle.jdbc.driver.PhysicalConnection.setAutoCommit(PhysicalConnection.java:4
My app still run normally with classes12.jar.
I researched on oracle:
This exception is raised for any one of the following cases:
- When auto-commit status is set to true and commit or rollback method is called
- When the default status of auto-commit is not changed and commit or rollback method is called
- When the value of the COMMIT_ON_ACCEPT_CHANGES property is true and commit or rollback method is called after calling the acceptChanges method on a rowset
But i couldn't find mistake in my source. Please help me give more explaination about this error.
connection.setAutoCommit(false);trueandfalse(and vice versa), the driver must commit the active transaction, and it looks like this commit fails because the driver is in autocommit. On the other hand, I'd expect Oracle to thoroughly test their driver for these kind of basic state switches.