如何在CakePHP中记录错误的完整SQL查询?

时间:2012-03-07 22:03:08

标签: cakephp logging cakephp-2.0

当我设置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。

1 个答案:

答案 0 :(得分:2)

// In a view
echo $this->element('sql_dump');

// Elsewhere
$log = $this->Model->getDataSource()->getLog(false, false);