【发布时间】:2011-08-04 06:56:45
【问题描述】:
我的 CodeIgniter 日志中总是出现错误,例如
ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1
但如果没有上下文,它并没有多大帮助。是否有任何方法可以记录导致此错误的查询?
【问题讨论】:
标签: php codeigniter logging
我的 CodeIgniter 日志中总是出现错误,例如
ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1
但如果没有上下文,它并没有多大帮助。是否有任何方法可以记录导致此错误的查询?
【问题讨论】:
标签: php codeigniter logging
我只是快速浏览了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);
【讨论】:
首先,您可以使用 $this->db->last_query()
获取运行的最后一个查询所以我们可以使用以下 sn-p 将查询作为字符串获取:
// 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 );
注意:根据您的应用程序逻辑和流量,随着时间的推移,这可能会给错误日志增加大量额外的膨胀,因此我建议仅将其用作临时故障排除工具。 p>
希望对您有所帮助。
【讨论】:
检查您是否在插入的表中为主键定义了自动增量。
【讨论】: