当我启用MySQL通用查询日志时,准备好的语句执行记录如下:
Execute SELECT col1, col2 FROM table1 WHERE col1 = ?我在互联网上看到了其他信息,我认为这些信息显示人们看到了准备好的语句参数的替换值,但我根本找不到这方面的信息。
我需要看到在查询中使用的值,并且不能在客户端执行,因为它是编译过的代码(虽然我确实试图让它在端口3306上连接,但是ngrep没有显示流量,所以如果可用的话,我想它使用的是套接字,而且我也不知道用数据包嗅探来重构准备好的查询有多容易)。
如果我设置了long_query_time = 0,那么缓慢的查询日志会显示我想要的值吗?还有其他的可能性吗?
发布于 2016-11-14 05:16:12
设置long_query_time = 0和slow_query_log = 1,在慢速查询日志中重新启动mysql显示具有实际参数值的查询。
我不会接受这个答案,这是获得通用查询日志以显示参数值的更好方法。
发布于 2017-07-08 19:41:14
您需要跟踪dev或prod中的查询吗?如果只有开发人员,您可以查看乐透。它显示了预先准备好的语句和它的参数。
发布于 2020-03-12 22:53:51
mysql一般日志完全符合您的要求。寻找“执行”执行,而不是“准备”
例如,这里有两行,首先看到带有参数变量的准备语句命令,然后看到execute语句,变量替换它们的字面值。
Prepare SELECT `html_column_grid`.* FROM `html_column_grid` WHERE html_column_grid_html_id IN(?) ORDER BY `html_column_grid_ordering`
Execute SELECT `html_column_grid`.* FROM `html_column_grid` WHERE html_column_grid_html_id IN('5555') ORDER BY `html_column_grid_ordering` 这是在mysql 5.7上
https://serverfault.com/questions/814710
复制相似问题