Re: [問題]Django Transaction error

作者: MacPerson (Gary)   2014-11-21 22:48:46
大家好:
回頭來分享,這個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
作者: uranusjr (←這人是超級笨蛋)   2014-11-21 22:59:00
既然都追源碼了, 可以去看看 atomic 的實作, 裡面註解很詳細, 看完應該就會放心說不定還可以解答你的資料庫究竟發生什麼事了

Links booklink

Contact Us: admin [ a t ] ucptt.com