Re: [问题]Django Transaction error

楼主: MacPerson (Gary)   2014-11-21 22:48:46
大家好:
回头来分享,这个issue的解决办法。
在StackOverFlow,有找到一篇关于这个issue的解法以及说明:


只是这个问题的发生,还是个谜(太嫩了),根据同事转述,他也在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官方文章,给遇到相同问题的乡民参考

作者: uranusjr (←這人是超級笨蛋)   2014-11-21 22:59:00
既然都追源码了, 可以去看看 atomic 的实作, 里面注解很详细, 看完应该就会放心说不定还可以解答你的数据库究竟发生什么事了

Links booklink

Contact Us: admin [ a t ] ucptt.com