mysql自動提交的問題
問題描述
我使用的mysql5.5自動提交是默認(rèn)打開的。現(xiàn)在在終端執(zhí)行一條事物。
begin;update user set username=’Lee’ where id=1;
按說這條事物是自動commit的才對啊,因為默認(rèn)是自動提交。為什么不是自動的commit,還是在等待人工commit。
mysql的事物發(fā)現(xiàn)有個問題,我開啟事物,然后insert一條數(shù)據(jù),沒有commit。然后select,發(fā)現(xiàn)這條數(shù)據(jù)竟然已經(jīng)加進去了,這是什么鬼,在沒commit之前數(shù)據(jù)不應(yīng)該在內(nèi)存里的么。
然后我執(zhí)行rollback。再試圖開啟事物insert一條數(shù)據(jù),commit。這時候不對了,新產(chǎn)生的id應(yīng)該是上一條回滾的那條id才對啊,為什么是+1了呢。
問題解答
回答1:開啟事務(wù)必須手動提交,詳情見我寫的一篇事務(wù)隔離級別文章
回答2:吐槽一下,是事務(wù),不是事物……1、你已經(jīng)手動打開了事務(wù),事務(wù)在你控制之下,所以你必須手動提交才會生效,回滾同理;2、MySQL默認(rèn)的事務(wù)隔離級別是RR級,所以可以讀到同一事務(wù)內(nèi)的數(shù)據(jù);3、自增id不受事務(wù)影響,不論成功提交還是失敗回滾,都會自增,參考資料;
其實對于這三個問題,我也只是知其然不知其所然,但這些問題都可以通過搜索引擎得到答案。
回答3:自動提交是不寫begin,事務(wù)的概念沒有搞清楚,搜索有很多答案。
回答4:先把錯別字改了。
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - immutable配合react提升性能?3. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化4. 實現(xiàn)bing搜索工具urlAPI提交5. javascript - 移動端上不能實現(xiàn)拖拽布局嗎?6. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?7. javascript - nodejs關(guān)于進程間發(fā)送句柄的一點疑問8. thinkPHP5中獲取數(shù)據(jù)庫數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙9. java - 使用fastjson對HashMap進行序列化錯誤10. index.php錯誤,求指點

網(wǎng)公網(wǎng)安備