0

mysql2自述文件我们读到:

MySQL2 大部分 API 与 mysqljs兼容

哪个包的选项定义为:

  • debug:将协议详细信息打印到标准输出。可以是真/假或应打印的数据包类型名称数组。(默认:假)

这个选项甚至有一个例子:

var connection = mysql.createConnection({debug: ['ComQueryPacket', 'RowDataPacket']});

true但是,使用,"ComQueryPacket"和/或设置此选项会"RowDataPacket"产生大量不相关的数据;我只关心发送 SQL 查询和变量。这个包怎么能做到这一点?

4

1 回答 1

1

debug选项仅支持 mysql2 中的真/假值。记录所有查询的最简单方法是修改 Connection.prototype.addCommand,示例伪代码:

let addCommand = Connection.prototype.addCommand
function loggingAddCommand(cmd) {
  if (cmd.constructor === Commands.Query) {
    console.log(`Adding query command, sql: ${cmd.sql}`);
  }
  this.addCommand(cmd);
}

connection.addCommand = loggingAddCommand;

我会尝试考虑更好的 api 以使这更容易。也许在连接上有“命令”事件?如果我们添加这个,上面的例子会变成conn.on('command_added', cmd => { /* ... */ })

于 2020-10-23T07:39:36.320 回答