【问题标题】:How can I log the full SQL query of an error in CakePHP?如何记录 CakePHP 中错误的完整 SQL 查询?
【发布时间】:2012-03-07 22:03:08
【问题描述】:

当我设置了Configure::write('debug', 2); 时,Cake 中的 SQL 错误会输出带有错误消息的完整 SQL 语句,如下所示:

数据库错误 错误:SQLSTATE[42000]:[Microsoft][SQL Server Native Client 10.0][SQL Server]',' 附近的语法不正确。
SQL 查询:SELECT ,
注意:如果要自定义此错误信息,请创建 app\View\Errors\pdo_error.ctp

但是,当我查看由于设置 Configure::write('log', true); 而创建的默认 error.log 文件中的错误时,我得到了以下信息:

2012-03-07 15:57:53 错误:[PDOException] SQLSTATE[42000]:[Microsoft][SQL Server Native Client 10.0]
[SQL Server]',' 附近的语法不正确。
0 C:\wamp\www\lib\Cake\Model\Datasource\DboSource.php(436): PDOStatement->execute(Array)

当发生数据库错误时,如何让 CakePHP 2.0 保存完整的 SQL 语句?我在生产中使用此日志记录,所以我不能手动保存 SQL 或保持调试 2 开启。

【问题讨论】:

    标签: cakephp logging cakephp-2.0


    【解决方案1】:
    // In a view
    echo $this->element('sql_dump');
    
    // Elsewhere
    $log = $this->Model->getDataSource()->getLog(false, false);
    

    【讨论】:

    • 在您尝试保存后,其他代码很可能会在您的控制器中。
    • 这是否意味着直接使用“型号”一词或替换为您的型号名称?无论哪种方式,它都不适合我。
    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2019-08-01
    • 2010-10-28
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多