文章详情页
mysql自动提交的问题
浏览:133日期:2022-06-20 10:25:38
问题描述
我使用的mysql5.5自动提交是默认打开的。现在在终端执行一条事物。
begin;update user set username=’Lee’ where id=1;
按说这条事物是自动commit的才对啊,因为默认是自动提交。为什么不是自动的commit,还是在等待人工commit。
mysql的事物发现有个问题,我开启事物,然后insert一条数据,没有commit。然后select,发现这条数据竟然已经加进去了,这是什么鬼,在没commit之前数据不应该在内存里的么。
然后我执行rollback。再试图开启事物insert一条数据,commit。这时候不对了,新产生的id应该是上一条回滚的那条id才对啊,为什么是+1了呢。
问题解答
回答1:开启事务必须手动提交,详情见我写的一篇事务隔离级别文章
回答2:吐槽一下,是事务,不是事物……1、你已经手动打开了事务,事务在你控制之下,所以你必须手动提交才会生效,回滚同理;2、MySQL默认的事务隔离级别是RR级,所以可以读到同一事务内的数据;3、自增id不受事务影响,不论成功提交还是失败回滚,都会自增,参考资料;
其实对于这三个问题,我也只是知其然不知其所然,但这些问题都可以通过搜索引擎得到答案。
回答3:自动提交是不写begin,事务的概念没有搞清楚,搜索有很多答案。
回答4:先把错别字改了。
相关文章:
1. css3 - 一个关于CSS雪碧图的问题2. docker-machine添加一个已有的docker主机问题3. 如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?4. 前端 - webpack如何打包script标签引入的代码5. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题6. wordpress - nginx 反代 Varnish 走 Https ,WP后台 ‘您没有足够的权限访问该页面。’7. mac里的docker如何命令行开启呢?8. node.js - antdesign怎么集合react-redux对input控件进行初始化赋值9. css - 一条线两边有短线的样式表怎么写?10. 在bootstrap中怎么让浏览器缩小到一定大小时,里面的元素就不自适应屏幕大小,而是固定的大小。
排行榜

网公网安备