Mysql出現“ Lock wait timeout exceeded; try restarting transaction”錯誤

今天用django寫一個小程序,結果調用數據庫的時候在執行update命令時,一直出現“ Lock wait timeout exceeded; try restarting transaction”錯誤。

網上百度了下,說是可以通過改mysql的配置文件/ect/my.cnf中的innodb_lock_wait_timeout變量,將它的值提高到500,即innodb_lock_wait_timeout=500.但我改了之後,沒有解決。

又百度之,也沒找到能夠解決的方法。當然,這很可能是因爲我沒搜到好帖子,總之。。。我糾結了幾個小時這個問題,不小心機器重啓了。。之後。。我再次執行,居然可以。。。發火

首先聲明我是數據庫小白,只會常用命令操作,對數據庫只懂使用,而且使用的很淺,對數據庫的理解更是不深刻,所以我可能說不到點兒上,無法針對你的環境解決這個問題。那就在百度谷歌下,肯定可以的。加油,不過還是要恭喜你,得到了博主我在遠方深情且飽含熱淚的祝福生氣。不要給我差評,不要罵我,乖,因爲我不會開評論的偷笑

開始說正題:

我當時出問題的環境:centos,打開了一個mysql命令行、一個使用數據庫的程序在運行(其實就是我在對數據庫操作的project)、一個python shell(在python裏面我也在使用數據庫)。

現在看這三個環境,你一定以爲我瘋了,是的,沒錯!你沒錯!!!我現在也這麼感覺的。當時的我肯定是被驢蹬了,弱爆了鄙視

其實,當時,我自作聰明地想的是:在python shell裏面試一下我寫的程序,在mysql命令行試一下我的mysql語句,再把都通過的程序寫到我的project中,這樣程序就沒錯了呀。。尼瑪,多麼嚴謹的寫代碼步驟啊!結果就這樣給自己挖了一個碩大的坑,在坑裏撲騰了半天罵人

以上除了粉紅底色的都可以不看,博主只是無法控制要瘋的節奏,在吐槽自己的智商。。下面開始說爲什麼會出現這個該死的錯誤。

沒錯,你真的沒有看錯!那就是:只留一個可以對數據庫有操作的shell或程序或。。其他的都關掉、關掉!

如果還是不可以,那我建議你,保存你的程序,重啓下。

如果真的你這麼做了之後,解決了問題,那你一定會懷着對博主感謝的態度,繼續看爲什麼會這樣,這尼瑪到底是爲什麼!

其實,是mysql爲了對數據庫的插入(insert)、更新(update)、刪除(delete)等更改數據庫內容命令進行的自我保護,同一時刻只允許一個窗口對數據庫進行以上更改操作。

官方點兒:就是所謂的數據庫死鎖。




具體,想了解數據庫死鎖、想更加深入對這個問題究其根本的。博主我只能爲你這種探索精神點個贊,那你就繼續百度谷歌啦~小白博主我只能送你到這兒了,我們白了白。

如果你想無私的跟我分享,可以私信我,因爲我關了評論喔~如果你想罵我這狗屁方法不管用,那還是不要了吧委屈

精分(其實是被這個問題逼瘋的)博主,求大家放過。害羞再見


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章