最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年11月06日 10:07:02   作者:AsiaYe  
這篇文章主要介紹了MySQL刪除了記錄不生效的原因排查,幫助大家解決MySQL刪除語句不生效的問題,感興趣的朋友可以了解下

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

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

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

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 -P4306
Enter password: 
XXXXXXXXXXXXXXXXXXXXXX
Type '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)

mysql--dba_admin@127.0.0.1:(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)前會話中的自動(dòng)提交被設(shè)置成了off,所以刪除的時(shí)候,貌似已經(jīng)成功了,重啟之后再看,這些事務(wù)被回滾了,所以就好像刪除操作"失效"一樣。

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

[mysqldump]
quick
max_allowed_packet = M

[mysql]
no-auto-rehash
max_allowed_packet = M
prompt=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è)小的知識點(diǎn)需要注意一下:

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

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

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

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

以上就是MySQL刪除了記錄不生效的原因排查的詳細(xì)內(nèi)容,更多關(guān)于MySQL刪除了記錄不生效的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mysql 編碼設(shè)置命令

    mysql 編碼設(shè)置命令

    mysql 編碼設(shè)置命令,需要的朋友可以參考下。
    2009-10-10
  • MySQL 常見的數(shù)據(jù)表設(shè)計(jì)誤區(qū)匯總

    MySQL 常見的數(shù)據(jù)表設(shè)計(jì)誤區(qū)匯總

    雖然會有一些常規(guī)意義上的數(shù)據(jù)表錯(cuò)誤設(shè)計(jì)和優(yōu)秀設(shè)計(jì)原則,但是同樣也會有 MySQL 特定的一些情況,這會導(dǎo)致我們犯一些 MySQL 特定的錯(cuò)誤。本篇討論常見的設(shè)計(jì)誤區(qū)。
    2021-06-06
  • Mysql數(shù)據(jù)庫中的redo?log?寫入策略和binlog?寫入策略

    Mysql數(shù)據(jù)庫中的redo?log?寫入策略和binlog?寫入策略

    這篇文章主要介紹了Mysql?redo?log?寫入策略和binlog?寫入策略,通過本文學(xué)習(xí)可以了解redo?log的寫入策略是由InnoDB提供了innodb_flush_log_at_trx_commit參數(shù),binlog的寫入策略,write?和fsync的時(shí)機(jī),是由參數(shù)sync_binlog控制的,需要的朋友可以參考下
    2022-04-04
  • Python?Matplotlib繪圖基礎(chǔ)詳細(xì)教程

    Python?Matplotlib繪圖基礎(chǔ)詳細(xì)教程

    matplotlib是python中用于繪制各種圖像的模塊,功能十分強(qiáng)大,通常與pandas模塊搭配使用,可以生成各種樣視的圖片,用于數(shù)據(jù)的分析和展示,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib繪圖基礎(chǔ)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Mysql表創(chuàng)建外鍵報(bào)錯(cuò)解決方案

    Mysql表創(chuàng)建外鍵報(bào)錯(cuò)解決方案

    這篇文章主要介紹了Mysql表創(chuàng)建外鍵報(bào)錯(cuò)解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • mysql存儲中使用while批量插入數(shù)據(jù)(批量提交和單個(gè)提交的區(qū)別)

    mysql存儲中使用while批量插入數(shù)據(jù)(批量提交和單個(gè)提交的區(qū)別)

    這篇文章主要介紹了mysql存儲中使用while批量插入數(shù)據(jù)(批量提交和單個(gè)提交的性能差異),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 如何優(yōu)雅、安全的關(guān)閉MySQL進(jìn)程

    如何優(yōu)雅、安全的關(guān)閉MySQL進(jìn)程

    這篇文章主要介紹了如何優(yōu)雅、安全的關(guān)閉MySQL進(jìn)程,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL 觸發(fā)器的使用及需要注意的地方

    MySQL 觸發(fā)器的使用及需要注意的地方

    這篇文章主要介紹了MySQL 觸發(fā)器的使用及需要注意的地方,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2021-01-01
  • Mysql獲取id最大值、表的記錄總數(shù)等相關(guān)問題的方法匯總

    Mysql獲取id最大值、表的記錄總數(shù)等相關(guān)問題的方法匯總

    在做網(wǎng)站開發(fā)時(shí),我們也許會想要取得mysql里id最大的一條記錄,這個(gè)其實(shí)很簡單。這篇文章給大家整理了獲取一個(gè)表的記錄數(shù)、獲取一個(gè)表的最大id、獲取一個(gè)表的auto_increment值等相關(guān)問題的答案,有需要的朋友們可以參考借鑒。
    2016-09-09
  • MySQL 如何查詢 JSON 數(shù)組是否包含特定的值

    MySQL 如何查詢 JSON 數(shù)組是否包含特定的值

    本文給大家介紹MySQL 如何查詢 JSON 數(shù)組是否包含特定的值,假設(shè)定義了一張表 School,其中字段 stages 為 JSON 類型,本文通過實(shí)例代碼給大家詳細(xì)講解,感興趣的朋友一起看看吧
    2023-11-11

最新評論

连城县| 平和县| 张北县| 区。| 右玉县| 镇原县| 夏邑县| 兴宁市| 布拖县| 额济纳旗| 巨鹿县| 乌鲁木齐县| 莱州市| 屏山县| 太康县| 栾城县| 上饶县| 石家庄市| 邵阳市| 左云县| 顺义区| 宜城市| 长泰县| 平定县| 玉溪市| 全南县| 华阴市| 胶南市| 吕梁市| 刚察县| 衡水市| 桦甸市| 云梦县| 类乌齐县| 调兵山市| 四会市| 嘉兴市| 高州市| 安西县| 姚安县| 三亚市|