CodeIgniter可以在错误日志中显示MySQL查询?

时间:2011-04-12 22:41:19

标签: php codeigniter logging

我总是在CodeIgniter日志中出现错误,例如

ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1

但没有背景,这没有太大帮助。有没有办法记录导致此错误的查询?

3 个答案:

答案 0 :(得分:2)

我只是快速浏览了system/database/DB_Driver.php(第323行)文件,它没有使用您选择的任何设置记录SQL查询。但是,如果您处于db_debug模式,它应该将这些消息打印到屏幕上。

如果您不介意搞乱CI系统文件夹中的文件,可以通过将system/database/DB_Driver.php(第323行,CI 2.0.1)更改为:

log_message('error', 'Query error: '.$error_msg. ' - '. $sql);

答案 1 :(得分:1)

首先,您可以使用 $ this-> db-> last_query()

获取最后一次运行的查询

因此我们可以将查询作为包含以下代码段的字符串获取:

// strip out line returns, new lines and tabs
$query = str_replace( array("\r", "\n", "\t"), '', trim($this->db->last_query()) );

一旦有了字符串,我们就可以登录到错误日志:

error_log( "Last database query: " . $query );

注意:根据您的应用程序逻辑和流量,这可能会随着时间的推移在错误日志中增加大量的额外膨胀,因此我建议将其仅用作临时故障排除工具。

希望有所帮助。

答案 2 :(得分:0)

检查您是否在插入的表格中为主键定义了自动增量。