【问题标题】:How to debug delete() in CakePHP如何在 CakePHP 中调试 delete()
【发布时间】:2023-04-04 05:43:01
【问题描述】:

如何在 CakePHP 中调试 delete()?当我这样做时:

debug($this->Sessions->delete($s));

我收到此错误:

{
    "message": "SQLSTATE[42S22]: Column not found: 1054 Unknown column \u0027session_id\u0027 in \u0027where clause\u0027",
    "url": "\/api\/sessions\/delete\/2856",
    "code": 500,
    "file": "\/var\/www\/vendor\/cakephp\/cakephp\/src\/Database\/Statement\/MysqlStatement.php",
    "line": 39
}

编辑:找出我的问题,我错误地在表中调用了 session_id 列“sessions_id”。我更新了这个,它解决了我的问题。但是我真的很想知道如何正确调试delete()find()。我注意到有一个调试控制台bin/cake console。然后help 调试东西,但我不知道如何使用它,而且似乎找不到任何关于此的文档。任何人都可以帮忙吗?谢谢。

【问题讨论】:

  • 您可能应该澄清您说“debug”时的确切含义。
  • @ndm 提供更详细的错误消息,最好是回溯到导致问题的确切行。

标签: cakephp


【解决方案1】:

错误消息直接来自 DBMS,而不是来自 CakePHP,它告诉您几乎所有关于查询失败原因的信息,但实际上没有办法获得更多信息。

除非您谈论的是抛出异常的行,否则指向特定行会相当复杂,因为在这种情况下没有确切的行导致问题,CakePHP 端工作得很好,您只是错误地配置/命名了事物,从而导致生成了一个不起作用的 SQL 查询。

我建议使用适当的 IDE 和调试器(如 XDebug),它可以在出现异常时停止,然后您就可以获得堆栈跟踪和一堆上下文信息,并且您可以轻松地单步执行代码。也可以在日志中找到一个普通的堆栈跟踪 (/logs/*.log)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2021-04-08
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多