我在Ubuntu 14.04上使用Django 1.5 Mysql 5.5(InnoDb)。我在create方法中创建多个对象,
@transaction.commit_on_success
def create(self, request, *args, **kwargs):
try:
v1 = Voc()
v1.save()
v2 = create_guest(v1)
except Exception:
logger.exception('Exception')
如果create_guest方法中有任何异常,它也应该回滚v1对象,当Djnago和MySql都在同一台计算机上时,会观察到此行为,但是,如果数据库在另一台计算机上,则不会回滚v1对象发生。我已经尝试了所有类似commit_manually和savepoints的方法,但是没有任何效果。
任何帮助或见解将不胜感激。
提前致谢。
最佳答案
@transaction.commit_manually
def create(self, request, *args, **kwargs):
try:
v1 = Voc()
v1.save()
v2 = create_guest(v1)
transaction.commit()
except Exception:
logger.exception('Exception')
transaction.rollback()
关于mysql - Django 1.5 Mysql 5.5(InnoDb)事务不在异常中回滚,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29431846/