作者MacPerson (Gary)
看板Python
标题Re: [问题]Django Transaction error
时间Fri Nov 21 22:48:46 2014
大家好:
回头来分享,这个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://webptt.com/cn.aspx?n=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
1F:→ uranusjr: 既然都追源码了, 可以去看看 atomic 的实作, 里面注解很 11/21 22:59
2F:→ uranusjr: 详细, 看完应该就会放心 11/21 22:59
3F:→ uranusjr: 说不定还可以解答你的资料库究竟发生什麽事了 11/21 23:00
※ 编辑: MacPerson (122.118.57.225), 11/21/2014 23:36:20