【问题标题】:java.sql.SQLException: Could not commit with auto-commit set on (PhysicalConnection.java:2356)java.sql.SQLException:无法通过设置自动提交来提交(PhysicalConnection.java:2356)
【发布时间】:2020-03-07 22:13:24
【问题描述】:

我的 web 应用程序启动没有出现错误,但是当我运行它时,我有这个错误...

我的同事中没有一个可以帮助我,你们中的一些人?

我在 eclipse 理性和 java 1.6.0 上使用 websphere 7

E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Errore servlet]-[action]: it.xxx.navigator.exception.NavigatorException: java.sql.SQLException: Could not commit with auto-commit set on
    at it.xxx.navigator.Navigator.throwException(Navigator.java:53)
    at it.xxx.navigator.Navigator.initialize(Navigator.java:217)
    at it.xxx.pensionis7.action.IndexAction.index(IndexAction.java:499)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)


Caused by: java.sql.SQLException: Could not commit with auto-commit set on
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2356)
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2403)
    at oracle.jdbc.OracleConnectionWrapper.commit(OracleConnectionWrapper.java:139)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.commit(WSJdbcConnection.java:1112)
    at it.xxx.navigator.dao.NavigatorConnection.commit(NavigatorConnection.java:46)
    at it.xxx.navigator.delegate.NavigatorBD.getDefinedApplications(NavigatorBD.java:78)
    at it.xxx.navigator.delegate.NavigatorDelegate.getDefinedApplications(NavigatorDelegate.java:33)
    at it.xxx.navigator.Navigator.initialize(Navigator.java:190)
    ... 35 more

【问题讨论】:

  • 你找到创建这个的代码了吗?

标签: java oracle websphere-7


【解决方案1】:

Oracle 的 JDBC 驱动程序在尝试使用getAutoCommit() == true 提交时抛出异常。

所以你要么:使用自动提交并且根本不调用commit()(它会被自动调用)

仅在getAutoCommit() == false 时调用commit()

if (!connection.getAutoCommit()) {
    connection.commit();
}

【讨论】:

  • 如果我搜索它,我没有 getAutoCommit
  • @dav03ros,你在NavigatorConnection.commit()做什么?
  • Nothing 因为 navigator 是一个外部 jar
  • 那么问题出在那个外部 jar 中。如果您无法更改它,我可以建议的唯一解决方案 - 禁用自动提交模式 (connection.setAutoCommit(false)) 以便可以在 NavigatorConnection 中调用 connection.commit()
  • 在哪里可以禁用此自动提交模式?
猜你喜欢
  • 2014-07-20
  • 2020-05-23
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 2011-12-13
  • 2015-02-16
  • 2011-06-13
相关资源
最近更新 更多