为何node-mysql 事务处理没有起效。见代码。
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;