遇到乙個線上問題,應用執行sql報錯,排查mysql:
select * from information_schema.innodb_trx;
select * from information_schema.innodb_locks;
select * from information_schema.innodb_lock_waits;
select * from processlist;
發現在trx表中存在乙個事務trx_strated已經很長時間了,占用了很多表。懷疑是事務開啟未commit或者rollback。
讓開發各自去排查**,可能能力有限,檢查一遍也沒找到問題所在。
當前智慧型kill掉這個執行緒。然後進行如下配置:
#設定是否開啟日誌
-- set global general_log=on;
#設定日誌記錄方式 table、file
-- set global log_output='table'
select *,convert (argument using utf8) as `sql` from mysql.general_log where thread_id = 17 order by event_time desc;
當在出現問題時,查詢到問題執行緒執行的sql語句。反過來去找**中呼叫的地方。
最後發現是在開啟事務後,進行了乙個if判斷,然後直接return了。導致的沒有commit或者rollback。
mysql中begin end語句一直報錯
官網上沒說清楚,上面給的例子執行也報錯.有人說是begin end只能用在儲存過程,事件等等情況下,我不知道是不是必須的.我碰到這個問題時候,看了下網上的部落格,使用下面的方法解決了 delimiter create procedure p file t begin declare variable...
一直很安靜
阿桑的走,很是突然,之前沒有聽過一點徵兆,突然就走了,其人與我非親非故,只是喜歡她那首 一直很安靜 給你的愛一直很安靜 來交換你偶爾給的關心 明明是三個人的電影 我卻始終不能有姓名 曾經想學這首歌,不過沒 細胞怎麼都學不會,現在將歌詞貼上來,以做紀念 空蕩的街景想找個人放感情 做這種決定是寂寞與我為...
一直報數遊戲
一種報數遊戲是從1開始連續報數,如果報到7的倍數 7,14,21,28 或者包含數字7的數 7,17,27,37 就用拍手代替這個數而不能報出。假設你連續聽到m聲拍手,問造成你聽到m聲拍手的第一下拍手所代表的數是幾?例如,你聽到了兩次連續的拍手,最小的可能這兩次拍手是27和28,因此輸出27。輸入m...