如何从MySQL X DevAPI的SQL CRUD函数获取原始SQL查询语句?
查看MySQL X DevAPI生成的原始SQL语句
有几种实用的方法可以查看insert()、select()等CRUD方法最终生成的原始SQL:
开启客户端调试日志
在创建会话时添加日志配置,将日志级别设为debug,客户端会输出包括生成SQL在内的调试信息:mysqlx.getSession({ user: 'user', password: 'password', host: 'localhost', port: 33060, logger: { level: 'debug' } })运行代码后,控制台会打印出执行过程中生成的完整SQL语句。
调用语句对象的
inspect()方法
在执行语句前,先对构建好的语句对象调用inspect(),它会返回包含原始SQL的结构化信息:// 查看INSERT语句的SQL const insertStmt = myTable .insert(['name', 'birthday', 'age']) .values(['Laurie', '2000-5-27', 19]); console.log(insertStmt.inspect().sql); // 直接输出生成的INSERT SQL // 查看SELECT语句的SQL const selectStmt = myTable .select(['_id', 'name', 'birthday']) .where('name like :name && age < :age') .bind('name', 'L%') .bind('age', 30); console.log(selectStmt.inspect().sql); // 直接输出生成的SELECT SQL开启MySQL服务器查询日志
如果需要在服务器端验证执行的SQL,可以临时开启通用查询日志:-- 开启通用查询日志 SET GLOBAL general_log = 'ON'; -- 指定日志文件路径(可根据实际情况修改) SET GLOBAL general_log_file = '/var/log/mysql/general.log';执行完你的CRUD操作后,记得关闭日志以避免不必要的资源消耗:
SET GLOBAL general_log = 'OFF';直接查看指定的日志文件就能找到执行的原始SQL。
内容的提问来源于stack exchange,提问作者Alok
相关产品推荐
相关产品推荐

