【问题标题】:java.sql.SQLException: You cannot rollback with autocommit setjava.sql.SQLException:您不能使用自动提交集回滚
【发布时间】:2016-11-24 13:42:32
【问题描述】:

我的项目有问题。当我使用库连接到数据库时会出现问题。

这个库有如下代码:

PreparedStatement stmt = null;
try {
    con.setAutoCommit(true);
    stmt = con.prepareStatement(this.sqlIniBD);
    stmt.setString(1, id);
    stmt.executeUpdate();
} catch (Throwable t) {
    if (this.tavi.activo()) this.tavi.escribir(toString(), "No se ha podido insertar la fila inicial para las claves de encriptacion (" + id + "). Posiblemente ya existe: " + t);
}

我想问你,是否有可能将autoCommit(false) 放入我的standalone.xml。也许这很奇怪或愚蠢。例如,这是数据源:

<datasource jta="false" jndi-name="java:/xxx" pool-name="xxx" enabled="true" use-ccm="false">
    <connection-url>jdbc:oracle:thin:@oradag.cm.es:1524:oradag1</connection-url>
    <driver-class>oracle.jdbc.OracleDriver</driver-class>
    <connection-property name="autoCommit">
        <!-- not working -->false 
    </connection-property>
    <driver>ojdbc7.jar</driver>
    <security>
        <user-name>xxx</user-name>
        <password>xxx</password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <timeout>
        <set-tx-query-timeout>false</set-tx-query-timeout>
        <blocking-timeout-millis>0</blocking-timeout-millis>
        <idle-timeout-minutes>0</idle-timeout-minutes>
        <query-timeout>0</query-timeout>
        <use-try-lock>0</use-try-lock>
        <allocation-retry>0</allocation-retry>
        <allocation-retry-wait-millis>0</allocation-retry-wait-millis>
    </timeout>
    <statement>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</datasource>

有什么想法吗???我无法修改库,我没有代码。

所以我唯一的希望在于standalone.xml。

【问题讨论】:

  • 您在 JBoss 或 WildFly 或类似的公司工作?
  • 14:58:12,349 INFO [org.jboss.as] (MSC 服务线程 1-6) JBAS015899: JBoss EAP 6.3.0.GA (AS 7.4.0.Final-redhat-19)开始
  • 这正是我的 jboss 版本
  • 包含所有异常信息的堆栈跟踪在哪里?可以附上吗?
  • 当然...它在这里...

标签: java sql jdbc jboss jboss-eap-6


【解决方案1】:

最后,解决方案是选择 jar 中的代码,并创建一个新的 java 项目。将变量更改为 setAutoCommit(false),然后重新编译项目,像 jar 一样导出。所以,最后我得到了我的新罐子,变量中的值发生了变化。

一个奇怪的解决方案,但解决了问题。我当然使用了反编译器来实现这个解决方案

谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2020-03-07
    • 2021-06-03
    • 2015-06-23
    • 1970-01-01
    • 2013-01-23
    • 2014-10-29
    相关资源
    最近更新 更多