【问题标题】:CakePHP Confusing ConditionsCakePHP 令人困惑的条件
【发布时间】:2012-02-07 03:17:57
【问题描述】:

_你好 Stackoverflow!我希望您能帮助我解决一个非常不寻常的问题...

我一直在使用 CakePHP 运行一个复杂的脚本,其中涉及数千个快节奏的选择和插入。运行几分钟后,通常会抛出 SQL 错误。

它正在尝试使用过去查找的条件构建 SQL 查询。就像它从系统的完全不同部分获取“条件”数组,并将其用作简单查找的 WHERE 子句。

关于什么会导致 Cake 的查询构建器感到困惑的任何想法?

【问题讨论】:

  • 你使用的是什么版本的 CakePHP?
  • 捕获失败的查询,看看sql错误是什么。我首先想到的是模糊字段的问题(比如引用id,其中查询有一个连接并且两个表都有该列)
  • 查看查询日志是我尝试的第一件事。这不是一个模棱两可的领域……这是我在系统的完全不同部分使用的一组清晰、独特的条件。原始查询按预期开始(“字段”是正确的),但在 WHERE 之后,它会引入完全不同的方法中使用的条件。它将两个查询拼接在一起,导致 SQL 错误。
  • 您没有在模型关系中设置任何查找器查询吗?或与此相关的任何其他关系。
  • 不,巴里,我不知道。它们是相当简单(空)的模型。我正在使用“条件”和“连接”数组手动构建查询。

标签: php cakephp cakephp-1.3 cakephp-model


【解决方案1】:

如果您对同一个请求/进程执行多个查询,最好关闭数据源方法缓存,因为在某些情况下它可能会导致错误查询,而在大多数情况下,它只会稍微加快应用程序的速度:

ConnectionManager::getDataSource('default')->methodCache = false;

【讨论】:

  • 作为我回答的一个注释,这个问题在 cakephp 2.0 中消失了
  • 我应该在原帖中提到,我已经尝试关闭方法缓存,但仍然遇到同样的问题。很好的建议,但不幸的是它没有解决问题。
猜你喜欢
  • 1970-01-01
  • 2019-01-31
  • 2014-05-30
  • 2018-10-03
  • 2013-11-08
  • 2022-01-21
  • 2022-01-17
  • 2018-02-26
  • 1970-01-01
相关资源
最近更新 更多