为何node-mysql 事务处理没有起效。见代码。
发布于 9 年前 作者 mrlong 4120 次浏览 最后一次编辑是 8 年前 来自 问答
pool.getConnection(function(err,conn){
  if(!err){
    
    conn.beginTransaction(function(err){
      
      var billdata = {
        webi_guid:db.newGuid(),
        weor_code:'test111',
        webi_paywecode:'1111',
        webi_totalfee:100
      };
      
      conn.query('insert into we_bill set ?',billdata,function(err,rows){
        
        console.log('sss'+err);  
        conn.rollback(function(err){console.log(err)});
        //conn.commit();
        conn.release();
        return;
      
      });  
    });  
  }
  else{
    console.log('err'); 
  };
});

7 回复

我已 rollback 为何库内还有记录写入。

难道不是在失败的情况才roolback?

建议去看下官方文档,用法不是这么用的

@songqinghehe 为何失败才调用用 rollback, 我只做测试一下。 官方的文档我看了。如是我查不出来,只能说水平有问题。请指教我的代码有问题吗。

@mrlong 目测可能是 rollback 未完成前 connection 已经 release。它们在同一级别。 试下把 release 放在 rollback 的回调内。

@klesh 按你的方法执行还是一样。有问题。

conn.rollback(function(err){ console.log(err); conn.release();
});

问题解决了,没设置innoDB。。。

alter table we_bill engine=innodb;

回到顶部