Re: [問題]Django Transaction error

看板Python作者 (Gary)時間11年前 (2014/11/21 22:48), 11年前編輯推噓0(003)
留言3則, 1人參與, 最新討論串2/2 (看更多)
大家好: 回頭來分享,這個issue的解決辦法。 在StackOverFlow,有找到一篇關於這個issue的解法以及說明: http://ppt.cc/sX6l 只是這個問題的發生,還是個謎(太嫩了),根據同事轉述,他也在Trasaction中除錯, 直接關閉程式,不下幾十次,也沒有弄出種錯誤。 為了找出錯誤怎麼發生,我把DB重開,執行後,錯誤一樣發生,cookie清掉,錯誤 一樣發生,那一段跑進去後,就是會發生錯誤(如同上篇所述),追進Traceback, 追到這段 def validate_no_atomic_block(self): """ Raise an error if an atomic block is active. """ if self.in_atomic_block: raise TransactionManagementError( "This is forbidden when an 'atomic' block is active.") 那目前還是照StackOverFlow這篇來解掉這個issue,寫法跟我上篇差不多, 但是把set_auotcommit相關的語法都拿掉,但拿掉後有個隱憂是目前Django預設 autocommit=true,在沒有下autocommit=false,情況下進行transactation, 不知道會不會因為autocommit的關係,造成transaction失效,今天稍微 測了一下是OK的,如果有意外在上來跟各位分享。 也謝謝uranusjr的指教~ 再貼一篇Transaction官方文章,給遇到相同問題的鄉民參考 http://ppt.cc/bW7Y -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.118.57.225 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1416581329.A.6EC.html ※ 編輯: MacPerson (122.118.57.225), 11/21/2014 22:51:19 ※ 編輯: MacPerson (122.118.57.225), 11/21/2014 22:51:57

11/21 22:59, , 1F
既然都追源碼了, 可以去看看 atomic 的實作, 裡面註解很
11/21 22:59, 1F

11/21 22:59, , 2F
詳細, 看完應該就會放心
11/21 22:59, 2F

11/21 23:00, , 3F
說不定還可以解答你的資料庫究竟發生什麼事了
11/21 23:00, 3F
※ 編輯: MacPerson (122.118.57.225), 11/21/2014 23:36:20
文章代碼(AID): #1KRr3HRi (Python)
文章代碼(AID): #1KRr3HRi (Python)