myBatis中openSession();却自动提交的问题

博主在学习MySQL过程中遇到自动提交问题,发现是由于表引擎设置错误导致。尽管创建表时选择了支持事务的InnoDB引擎,但实际操作中误将表引擎改为MyISAM,而MyISAM不支持事务。解决方法是将表引擎更改为InnoDB,确保支持事务处理。此外,还探讨了如何更改MySQL默认引擎为InnoDB,以避免类似问题。
摘要由CSDN通过智能技术生成

最近在小破站看视频学习MySQL相关的东西,记录一下遇到的各种问题

自动提交问题

跟着小破站视频写的代码,却发现我的插入操作自动提交了(视频中需要手动提交);

猜测是myBatis中有设置为自动提交的方法,于是百度了一下,果然

myBatis中自动提交设置

openSession() 方法有带参数为 autoCommit 的布尔值,即是否自动提交可以手动控制的。

当openSession(true),即括号内为true的时候,mybaits是可以自动提交修改后的数据的

当openSession(),即括号内为空(或false),为手动提交,需要最后调用 session.commit() 来完成数据更新操作

查完之后又看了一遍源码,发现我写的确实是openSession();里面并未添加true;然后又看了几篇csdn上的攻略还是没能解决问题

真实原因

最后想是不是MySQL的引擎问题呢,一开始我觉得应该不是,因为创表的时候我特意改过表的引擎就是为了能进行事务操作,所以应该是没问题的

emmmmm........ 不应当(晕)

然后看了我当时写的源码:

ALTER TABLE salgrade ENGINE = InnoDb;

好吧,是我写错了(也不知道为啥这里我总写错,这个好像ALTER TABLE 这些要大写,反正之前写小写不对),用了代码提示里的表,表改错了(晕),下次直接Navicat吧还是

最终解决方案

 把t_student表的引擎改为InnoDB,就能解决问题了

MySQL的所有引擎中只有InnoDB支持事务,别的都会自动提交,所以如果需要实现事务功能,务必保证表的引擎为InnoDB哦

更改默认引擎

我百度了一下,说mysql-5.1版本之前默认引擎是MyISAM,之后是innoDB,但是我的默认却是MyISAM,不知道为啥(也有可能是我百度错了)

然后想着一劳永逸,直接把默认引擎改了得了,过程也不复杂;

在配置文件my.ini中的找到default-storage-engine,此时默认为MyISAM将等号后改为INNODB即可,当然这要先重启MySQL才能生效

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值