gpt4 book ai didi

php - 排除意外 mysql 查询故障的技术

转载 作者:行者123 更新时间:2023-11-29 02:06:55 25 4
gpt4 key购买 nike

我正在调试遗留 PHP 应用程序中的一个问题,在该应用程序中更新了表中的特定列,但没有将表中的所有行设置为一个值的约束。这种行为是意外的,所以我花了相当多的时间试图找出错误的原因。

背景:

  • 这是一个间歇性问题。
  • 我们无法在我们的开发环境(与生产环境相同)中重现它
  • 应用程序正在使用 ORM

我们尝试过的:

  • 查看源代码
  • 查看 mysql bin 日志。这让我们看到这是一个没有子句的单个 UPDATE 查询,实际上导致了错误数据的出现。
  • 添加额外的应用程序级日志记录。这使我们对应用程序有了更好的了解,但我们无法在错误发生时发现它。

我的问题:

当在不熟悉的应用程序中遇到看似流氓的查询时,您使用什么技术来查找该查询的来源?

最佳答案

对于间歇性问题,我建议在 PHP 代码中进行极其详细的记录。这将允许您查看更改发生时发生的情况以及实际运行的查询。如果无法手动复制它,那么在没有某种调试输出/日志记录的情况下就没有真正的方法来追踪它。

如果即使在添加额外的日志记录之后,您也无法发现问题,请使用测试环境并在没有涉及相关表的查询的情况下运行应用程序。

最后但同样重要的是,检查 mySQL 中的触发器。我不确定触发器的 mySQL 日志是什么,但它只进行更新而不在 bin 日志中提供具体信息是有道理的。

关于php - 排除意外 mysql 查询故障的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4337121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com