我想弄清楚遗留应用程序对我们的 mysql 数据库(复数)做了什么,因为我需要完全重构/替换它的一部分而不关心它是如何做的。我只对结果感兴趣。
目前我正在使用 DBI::Profile和 DBI::ProfileDumper通过添加 $ENV{DBI_PROFILE} = "!Statement/DBI::ProfileDumper";
。这向我展示了在命令行上运行 dbiprof dbi.prof
时的一堆查询,但看起来有点奇怪。
可能是我看错了报告。
#####[ 3 ]###########################################################
Count : 4
Total Time : 0.018930 seconds
Longest Time : 0.018881 seconds
Shortest Time : 0.000005 seconds
Average Time : 0.004732 seconds
Key 1 :
INSERT INTO orders (foo, bar) VALUES (1, 2)
为什么 4
显示为 Count
?它在 orders
表中创建了两行,而不是 4 行。此外,它还显示了它正在执行的第一个插入操作的值。对于其他一些,它将 ?
保留在查询字符串中。
也许分析是错误的方法。我一直在考虑用猴子修补 DBI 来记录查询,但我不确定该去哪里。可能我可以添加一个日志记录功能到prepare
,并添加到execute
以获取查询字符串和参数。
是否已经有类似的东西可供我使用?肯定有人想这样做?或者另一种方法?
我愿意接受任何类型的建议。
最佳答案
您想在级别 2 使用跟踪: https://metacpan.org/pod/DBI#TRACING
关于perl - 如何让 DBI 记录所有查询,包括参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19703521/