为何node-mysql 事务处理没有起效。见代码。 - CNode技术社区

为何node-mysql 事务处理没有起效。见代码。
发布于 11 年前 作者 mrlong 4473 次浏览 最后一次编辑是 9 年前 来自 问答
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;

回到顶部

AltStyle によって変換されたページ (->オリジナル) /