亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

線上的一次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客戶端登錄進去,發(fā)現了一個奇怪的問題:

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

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

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

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

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)

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

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

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

看來還是改的不徹底。

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

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

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

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

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

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

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

相關文章

  • MySQL 獨立索引和聯合索引的選擇

    MySQL 獨立索引和聯合索引的選擇

    為了提高數據庫效率,建索引是家常便飯;那么當查詢條件為2個及以上時,我們是創(chuàng)建多個單列索引還是創(chuàng)建一個聯合索引好呢?他們之間的區(qū)別是什么?哪個效率高呢?本文將詳細測試分析下。
    2021-05-05
  • MySQL 數據庫對服務器端光標的限制

    MySQL 數據庫對服務器端光標的限制

    從MySQL 5.0.2開始,通過mysql_stmt_attr_set() C API函數實現了服務器端光標。服務器端光標允許在服務器端生成結果集,但不會將其傳輸到客戶端,除非客戶端請求這些行。
    2009-03-03
  • 用一條mysql語句插入多條數據

    用一條mysql語句插入多條數據

    這篇文章主要介紹了在mysql中使用一條sql語句插入多條數據,效率非常高,但是原理其實很簡單,希望對大家有所幫助
    2014-09-09
  • mysql根據json字段內容作為查詢條件(包括json數組)檢索數據

    mysql根據json字段內容作為查詢條件(包括json數組)檢索數據

    本文主要介紹了mysql根據json字段內容作為查詢條件(包括json數組)檢索數據,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 將MySQL從MyISAM轉換成InnoDB錯誤和解決辦法

    將MySQL從MyISAM轉換成InnoDB錯誤和解決辦法

    原來自己用的是為了裝的, 所以在設置database usage(如下圖1)的時候按照discuz官方的建議,選的都是Non-Transactional Database Only(只支持MyISAM數據引擎的非事務數據庫),用MyISAM數據庫,還沒涉及到需要InnoDB,因此打算直接不加載INNODB引擎。
    2011-09-09
  • mysql中模糊查詢的四種用法介紹

    mysql中模糊查詢的四種用法介紹

    這篇文章主要介紹了mysql中模糊查詢的四種用法,需要的朋友可以參考下
    2014-03-03
  • Linux下實現MySQL數據備份和恢復的命令使用全攻略

    Linux下實現MySQL數據備份和恢復的命令使用全攻略

    這篇文章主要介紹了Linux下實現MySQL數據備份和恢復的命令使用全攻略,包括使用Mysqldump和LVM快照以及xtrabackup三種方法,傾力推薦!需要的朋友可以參考下
    2015-11-11
  • 一文帶你了解MySQL之約束

    一文帶你了解MySQL之約束

    在SQL標準中,一共規(guī)定了6種不同的約束,包括非空約束,唯一約束和檢查約束等,而在MySQL中是不支持檢查約束的,所以這篇文章先對其余5種約束做一個詳解和練習,需要的朋友可以參考下
    2023-06-06
  • Linux下安裝MySQL8.0.11的教程

    Linux下安裝MySQL8.0.11的教程

    這篇文章主要介紹了Linux下安裝MySQL8.0.11的教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • mysql數據庫找不到表的問題及解決

    mysql數據庫找不到表的問題及解決

    這篇文章主要介紹了mysql數據庫找不到表的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論