在用mysql-queues做事务时,遇到commit方法找不到的问题,但sql语句是执行了的,(回滚时问题同样存在),如下 : D:\DevTools\nodejs>node mysqltest2.js mysql-queues: debug mode enabled. execute [connection connect] succeed! D:\DevTools\nodejs\node_modules\mysql\lib\protocol\Parser.js:82 throw err; ^ TypeError: Object #<Queue> has no method ‘commit’ at Query.<anonymous> (D:\DevTools\nodejs\mysqltest2.js:53:14) at Query._callback (D:\DevTools\nodejs\node_modules\mysql-queues\index.js:96:17) at Query.Sequence.end (D:\DevTools\nodejs\node_modules\mysql\lib\protocol\sequences\Sequence.js:96:24) at Query._handleFinalResultPacket (D:\DevTools\nodejs\node_modules\mysql\lib\protocol\sequences\Query.js:143:8) at Query.OkPacket (D:\DevTools\nodejs\node_modules\mysql\lib\protocol\sequences\Query.js:77:10) at Protocol._parsePacket (D:\DevTools\nodejs\node_modules\mysql\lib\protocol\Protocol.js:271:23) at Parser.write (D:\DevTools\nodejs\node_modules\mysql\lib\protocol\Parser.js:77:12) at Protocol.write (D:\DevTools\nodejs\node_modules\mysql\lib\protocol\Protocol.js:39:16) at Socket.<anonymous> (D:\DevTools\nodejs\node_modules\mysql\lib\Connection.js:82:28) at Socket.emit (events.js:95:17)
源码如下: var mysql = require(‘mysql’); //调用MySQL模块
//创建一个connection var conn = mysql.createConnection({ host : '127.0.0.1’, //主机 user : 'aa’, //MySQL认证用户名 password : '123456’, //MySQL认证用户密码 port : '3306’, //端口号 database : 'test’, charset : 'UTF8_GENERAL_CI’, //连接字符集(默认:’UTF8_GENERAL_CI’,注意字符集的字母都要大写)
});
//创建一个连接
conn.connect(function(err){
if(err){
console.log('[query] - :’+err);
return;
}
console.log('[connection connect] succeed!’);
});
var queues = require(‘mysql-queues’); // 加载mysql-queues 支持事务
const DEBUG = true; queues(conn, DEBUG);
var trans = conn.startTransaction();
trans.query("INSERT INTO person(id,name,password,sex,email) VALUES ('33’, 'name33’, 'pass33’, 'bb’, ‘[email protected]’)", function(err, info) { if (err) { //throw err; trans.rollback(); } else { trans.commit(); } });
trans.query("INSERT INTO person(id,name,password,sex,email) VALUES ('44’, 'name44’, 'pass44’, 'bb’, ‘[email protected]’)", function(err, info) { if (err) { //throw err; trans.rollback(); } else { trans.commit(); } });
trans.execute(); console.log(‘execute’);