当前位置:Gxlcms > 数据库问题 > Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧

Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧

时间:2021-07-01 10:21:17 帮助过:17人阅读

);//自动提交

手动提交的话

SqlSession session = sessionFactory.openSession(false);//手动提交,其实就是默认的那种情况

 

后面去查了一下这个默认提交方式....发现mysql好像数据库本身也有个默认提交方式(自动提交)

发现自动提交可能会产生某些可怕的后果(某些删除操作写错就凉了),所以我决定把mysql的自动提交给关闭掉!(犹豫就会败北!)

 

有的小伙伴可能会好奇会有什么后果,举个例子:你要删除一个班和一个班的所有学生的时候,你删除一个班的时候没问题,然后删除学生出现了异常停止了,然而你的删除班级指令已经提交了..然后你会发现你没有了家(学生还在,班级没了)~~~~~嘤嘤嘤

 

p.s. 只有innero db类型的表才可以设置autocommit;

 

方式一、

禁用步骤:

1、在执行inser / update / delete之前 先执行一个begin;语句,进行了一段时间的数据库操作之后使用commit提交所有操作或者使用rollback回滚所有操作

p.s. 方式一要注意,一次commit或一次rollback表示最近一个begin到此次commit或rollback之间的操作都将提交或回滚,这之后的操作都必须重新设置begin,否则还会继续使用autocommit=ON的策略

 

方式二、

1、登录mysql数据库

2、set autocommit=‘off‘;

3、查看是否警用: show variables like "autocommit";                                                   (如果是OFF表示禁用成功)

4、执行一段insert / update / delete语句,检查无错误之后commit;这样,这段时间内的所有操作都将提交到数据库中,如果发现执行了不正确的insert / update / delete语句,则使用rollback,此时将会回滚到上一个commit之后数据库的状态



Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧

标签:步骤   数据库操作   插入   一个   回滚   --   没有   mysql数据库   禁用   

人气教程排行