国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

MySQL刪除了記錄不生效的原因排查

瀏覽:3日期:2023-10-09 17:45:24

線上的一次MySQL事務問題記錄

上周五進行了一個大表刪除的操作,在刪除的過程中,出現了一點小問題,白白花費了兩個小時,我這里記錄了一下大概的過程,廢話不多說了,直接看過程吧。

當時想進行刪除,先測試了一下刪除語句的語法,刪了一條試了一下,如下:

mysql ::>>select min(id) from XXXX_user_login;+---------+| min(id) |+---------+| |+---------+ row in set (0.00 sec)mysql ::>>delete from XXXX_user_login where id < ;Query OK, row affected (0.00 sec)mysql ::>>select min(id) from XXXX_user_login; +---------+| min(id) |+---------+| |+---------+ row in set (0.00 sec)

然后重新使用mysql客戶端登錄進去,發現了一個奇怪的問題:

[dba_mysql ~]$ /usr/local/mysql/bin/mysql -udba_admin -p -h127.0.0.1 -P4306Enter password: XXXXXXXXXXXXXXXXXXXXXXType ’help;’ or ’h’ for help. Type ’c’ to clear the current input statement.mysql ::>>select min(id) from XXXXX_user_login; +---------+| min(id) |+---------+| |+---------+ row in set (0.00 sec)

也就是剛才刪除掉的那一條記錄又重新回來了。

想想覺得挺奇怪的,是不是我刪除錯了,或者說刪除之后,業務方又重新插入了數據,這不是出問題了么。。。又重新試了幾次,都是一樣的效果。

這個現象很奇怪,之前沒有遇到過,我首先是檢查了一下腳本,確認刪除的腳本無誤后,又查了好半天,最后終于從事務的這個方向找到了一個突破口,懷疑是事務沒有提交導致的,于是看了一眼當前事務的參數,如下:

mysql ::>>show variables like ’%commit%’; +--------------------------------+-------+| Variable_name | Value |+--------------------------------+-------+| autocommit | OFF || innodb_commit_concurrency | || innodb_flush_log_at_trx_commit | |+--------------------------------+-------+ rows in set (0.00 sec)[email protected]:(none) ::>>mysql ::>>show global variables like ’%commit%’;+--------------------------------+-------+| Variable_name | Value |+--------------------------------+-------+| autocommit | ON || innodb_commit_concurrency | || innodb_flush_log_at_trx_commit | |+--------------------------------+-------+ rows in set (0.00 sec)

看到這個,基本上問題就已經確定了,是因為當前會話中的自動提交被設置成了off,所以刪除的時候,貌似已經成功了,重啟之后再看,這些事務被回滾了,所以就好像刪除操作'失效'一樣。

那既然已經定位到了問題,就開始找這個問題的根本原因,最終在配置文件中找到了最根本的原因,如下:

[mysqldump]quickmax_allowed_packet = M[mysql]no-auto-rehashmax_allowed_packet = Mprompt=mysql--u@h:d R:m:s>>init-command='set interactive_timeout=28800;set wait_timeout=28800;set autocommit=0;'

配置文件中的最后一行,mysql客戶端組的配置autocommit被設置成了0,當然就無法自動提交了,于是改了這個參數為1,再次重試腳本,發現問題依舊。。。

看來還是改的不徹底。

我們知道,mysql加載配置文件有一個順序,我們可以使用mysql --help|grep my.cnf的命令來查看,經過查看,是因為/etc/my.cnf中的配置也是autocommit=0,所以就把當前這個配置文件的參數給覆蓋了,最終,改完/etc/my.cnf文件中的autocommit參數內容之后,重新連接mysql服務器,發現問題解決。

總結,下面幾個小的知識點需要注意一下:

1、當發現數據無法刪除之后,可以先看看事務提交的參數是否設置成了off

2、使用show variables和show global variables可以分別查看當前會話和全局變量的事務參數;

3、my.cnf文件中的mysql組中的參數是用來控制mysql客戶端的配置的。

4、my.cnf文件有加載順序,改動的時候,需要全部都變更。或者保證只存在一個my.cnf文件。

以上就是MySQL刪除了記錄不生效的原因排查的詳細內容,更多關于MySQL刪除了記錄不生效的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 久久精品国产这里是免费 | 亚洲欧美日韩专区 | 日本高清专区一区二无线 | 国产a∨一区二区三区香蕉小说 | 亚洲三级毛片 | 欧美极品video粗暴 | 美女超爽久久久久网站 | 亚洲精品一区二区四季 | 久久久在线 | 欧美在线一二三区 | 国产三级三级三级三级 | 黄人成a动漫片免费网站 | 国产精品a人片在线观看 | 91av久久| 久久亚洲精品中文字幕亚瑟 | 男女男精品视频免费观看 | 一级毛毛片毛片毛片毛片在线看 | 日本视频在线免费播放 | 亚洲天堂伊人 | 久久毛片网站 | 午夜伦y4480影院中文字幕 | 黄色片免费网址 | 久久手机免费视频 | 久久久久久色 | 在线看国产视频 | 成人国内精品久久久久影院 | 成年女人毛片免费播放视频m | 午夜宅男在线永远免费观看网 | 99久久精品99999久久 | 成人精品国产亚洲欧洲 | 日日摸日日碰夜夜97 | 在线免费公开视频 | 国产成人久久精品激情91 | 国产成人精品本亚洲 | 99re6热视频精品免费观看 | 亚洲精品色综合色在线观看 | 亚洲男人的性天堂 | 欧美一级毛片高清视频 | 亚洲精品一区二区手机在线 | 交videos人妖| 一级国产精品一级国产精品片 |