Django 1.5 Mysql 5.5(InnoDb)事务在异常时没有回滚

时间:2015-04-03 12:02:05

标签: mysql django transactions innodb

我在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等所有内容,但是没有任何工作。 任何帮助或见解将受到高度赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

 @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()