来自mysql2我们阅读的自述文件:
MySQL2 is mostly API compatible with mysqljs
哪个包有一个选项定义为:
- debug: Prints protocol details to stdout. Can be true/false or an array of packet type names that should be printed. (Default: false)
这个选项甚至有一个例子:
var connection = mysql.createConnection({debug: ['ComQueryPacket', 'RowDataPacket']});
但是,使用 true
、"ComQueryPacket"
和/或 "RowDataPacket"
设置此选项会释放大量不相关的数据;我所关心的只是发送 SQL 查询和变量。如何使用这个包来完成此操作?
最佳答案
debug
选项仅支持 mysql2 中的 true/false 值。记录所有查询的最简单方法是猴子补丁 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_add', cmd => {/* ... */})
关于javascript - 如何调试通过 mysql2 发送的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64340799/