久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

線上的一次MySQL事務(wù)問題記錄

上周五進(jìn)行了一個(gè)大表刪除的操作,在刪除的過程中,出現(xiàn)了一點(diǎn)小問題,白白花費(fèi)了兩個(gè)小時(shí),我這里記錄了一下大概的過程,廢話不多說了,直接看過程吧。

當(dāng)時(shí)想進(jìn)行刪除,先測(cè)試了一下刪除語句的語法,刪了一條試了一下,如下:

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客戶端登錄進(jìn)去,發(fā)現(xiàn)了一個(gè)奇怪的問題:

[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)

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

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

這個(gè)現(xiàn)象很奇怪,之前沒有遇到過,我首先是檢查了一下腳本,確認(rèn)刪除的腳本無誤后,又查了好半天,最后終于從事務(wù)的這個(gè)方向找到了一個(gè)突破口,懷疑是事務(wù)沒有提交導(dǎo)致的,于是看了一眼當(dāng)前事務(wù)的參數(shù),如下:

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)

看到這個(gè),基本上問題就已經(jīng)確定了,是因?yàn)楫?dāng)前會(huì)話中的自動(dòng)提交被設(shè)置成了off,所以刪除的時(shí)候,貌似已經(jīng)成功了,重啟之后再看,這些事務(wù)被回滾了,所以就好像刪除操作'失效'一樣。

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

[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被設(shè)置成了0,當(dāng)然就無法自動(dòng)提交了,于是改了這個(gè)參數(shù)為1,再次重試腳本,發(fā)現(xiàn)問題依舊。。。

看來還是改的不徹底。

我們知道,mysql加載配置文件有一個(gè)順序,我們可以使用mysql --help|grep my.cnf的命令來查看,經(jīng)過查看,是因?yàn)?etc/my.cnf中的配置也是autocommit=0,所以就把當(dāng)前這個(gè)配置文件的參數(shù)給覆蓋了,最終,改完/etc/my.cnf文件中的autocommit參數(shù)內(nèi)容之后,重新連接mysql服務(wù)器,發(fā)現(xiàn)問題解決。

總結(jié),下面幾個(gè)小的知識(shí)點(diǎn)需要注意一下:

1、當(dāng)發(fā)現(xiàn)數(shù)據(jù)無法刪除之后,可以先看看事務(wù)提交的參數(shù)是否設(shè)置成了off

2、使用show variables和show global variables可以分別查看當(dāng)前會(huì)話和全局變量的事務(wù)參數(shù);

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

4、my.cnf文件有加載順序,改動(dòng)的時(shí)候,需要全部都變更。或者保證只存在一個(gè)my.cnf文件。

以上就是MySQL刪除了記錄不生效的原因排查的詳細(xì)內(nèi)容,更多關(guān)于MySQL刪除了記錄不生效的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 国产高清视频一区 | 一级大毛片 | 久久国产精品亚洲 | 天堂资源 | 成人久久久精品乱码一区二区三区 | 狠狠色狠狠色综合网 | 国产视频网 | 91在线免费看| 波多野结衣一二三 | 国产精品视频一区二区免费不卡 | 羞羞视频网站免费看 | 曰批免费视频播放免费 | 超碰97人人人人人蜜桃 | 亚洲福利 | 精品国产乱码久久久久久88av | 欧美视频精品 | 亚洲欧美日韩系列 | 日本精品一区二 | 国产精品亚洲精品久久 | 国产一级在线观看 | 中文二区 | 国产一区二区精品丝袜 | 色毛片 | 免费一区 | 天堂资源在线 | 久久久久国产精品一区二区 | 日韩精品免费观看 | 国产在线高清视频 | 欧美精品福利视频 | 成人影音 | 久久男女 | 日韩中文字幕在线 | 亚洲精品一区国产精品 | 91偷拍精品一区二区三区 | 色综合久久久久 | 91视频免费看 | 欧美不卡 | 日韩成人影院 | 999久久久 | 亚洲精选一区 | 亚洲成人国产精品 |