node mysql-queues 事务遇到问题(TypeError: Object #<Queue> has no method 'commit')
发布于 6天前 作者 toli1226 104 次浏览 来自 问答

在用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’);

回到顶部