mysql自動(dòng)提交的問(wèn)題
問(wèn)題描述
我使用的mysql5.5自動(dòng)提交是默認(rèn)打開(kāi)的。現(xiàn)在在終端執(zhí)行一條事物。
begin;update user set username=’Lee’ where id=1;
按說(shuō)這條事物是自動(dòng)commit的才對(duì)啊,因?yàn)槟J(rèn)是自動(dòng)提交。為什么不是自動(dòng)的commit,還是在等待人工commit。
mysql的事物發(fā)現(xiàn)有個(gè)問(wèn)題,我開(kāi)啟事物,然后insert一條數(shù)據(jù),沒(méi)有commit。然后select,發(fā)現(xiàn)這條數(shù)據(jù)竟然已經(jīng)加進(jìn)去了,這是什么鬼,在沒(méi)commit之前數(shù)據(jù)不應(yīng)該在內(nèi)存里的么。
然后我執(zhí)行rollback。再試圖開(kāi)啟事物insert一條數(shù)據(jù),commit。這時(shí)候不對(duì)了,新產(chǎn)生的id應(yīng)該是上一條回滾的那條id才對(duì)啊,為什么是+1了呢。
問(wèn)題解答
回答1:開(kāi)啟事務(wù)必須手動(dòng)提交,詳情見(jiàn)我寫(xiě)的一篇事務(wù)隔離級(jí)別文章
回答2:吐槽一下,是事務(wù),不是事物……1、你已經(jīng)手動(dòng)打開(kāi)了事務(wù),事務(wù)在你控制之下,所以你必須手動(dòng)提交才會(huì)生效,回滾同理;2、MySQL默認(rèn)的事務(wù)隔離級(jí)別是RR級(jí),所以可以讀到同一事務(wù)內(nèi)的數(shù)據(jù);3、自增id不受事務(wù)影響,不論成功提交還是失敗回滾,都會(huì)自增,參考資料;
其實(shí)對(duì)于這三個(gè)問(wèn)題,我也只是知其然不知其所然,但這些問(wèn)題都可以通過(guò)搜索引擎得到答案。
回答3:自動(dòng)提交是不寫(xiě)begin,事務(wù)的概念沒(méi)有搞清楚,搜索有很多答案。
回答4:先把錯(cuò)別字改了。
相關(guān)文章:
1. css3 - 請(qǐng)問(wèn)一下在移動(dòng)端CSS布局布局中通常需要用到哪些元素,屬性?2. PHP能實(shí)現(xiàn)百度網(wǎng)盤(pán)的自動(dòng)化么?3. 網(wǎng)頁(yè)爬蟲(chóng) - python requests爬蟲(chóng),如何post payload4. android - 使用vue.js進(jìn)行原生開(kāi)發(fā)如何進(jìn)行Class綁定5. node.js - vue服務(wù)端渲染如何部署到線上6. node.js - 微信的自動(dòng)回復(fù)問(wèn)題7. MySQL 水平拆分之后,自動(dòng)增長(zhǎng)的ID有什么好的解決辦法?8. javascript - 百度圖片切換圖片時(shí)url會(huì)改變,但無(wú)刷新,沒(méi)用hash,IE8也支持,請(qǐng)問(wèn)是用了什么技術(shù)?9. 我正在使用jsp / jstl / spring動(dòng)態(tài)生成css和js。如何將此結(jié)果放置在頭部的鏈接標(biāo)簽中。不在頭部的腳本標(biāo)簽中10. angular.js - 各位大神們,你們混合開(kāi)發(fā),web方式中更推薦用什么框架呀? react?vue?angular?謝謝~
