我在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/

10-16 06:41