connection.setAutoCommit(false)完成。但是它仍然在数据库中提交。为什么?

问题描述 投票:0回答:2

我正在使用MySQL数据库。

我有这样的代码:

public class Test {

    public static void main(String[] args) throws SQLException {
        String url = "....";
        String username = "...";
        String password = "...";
        DriverManager.registerDriver(new Driver());
        Connection connection = DriverManager.getConnection(url, username, password);
        connection.setAutoCommit(false);
        Statement stmt = connection.createStatement();
        stmt.execute("create table if not exists customer1\r\n" + "(\r\n"
                + "customer_name varchar(20) not null primary key,\r\n" + "customer_street varchar(20),\r\n"
                + "customer_city varchar(10)\r\n" + ")");
        // connection.commit();  
        connection.close();

    }

}

问题:执行此操作时,它会创建表并自动提交,但不应该提交。

我做了connection.setAutoCommit(false)并注释了connection.commit()进行测试,然后为什么要提交?

注意: 在我的系统上的MySQL中启用了自动提交。

问题: 我是否需要在mysql中禁用自动提交功能或在代码中缺少的功能?

此问题(jdbc autocommit(false) doesnt work)没有帮助。

java mysql jdbc
2个回答
0
投票

MySQL DDL,即创建表不是事务性的>>

参考transactions that cause implicit commit


0
投票

问题:执行此命令时,它将创建表并提交自动,但不应该。


0
投票

数据操作语句是事务性的,而不是数据定义语句。

© www.soinside.com 2019 - 2024. All rights reserved.