我总是在CodeIgniter日志中出现错误,例如
ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1
但没有背景,这没有太大帮助。有没有办法记录导致此错误的查询?
答案 0 :(得分:2)
我只是快速浏览了system/database/DB_Driver.php
(第323行)文件,它没有使用您选择的任何设置记录SQL查询。但是,如果您处于db_debug模式,它应该将这些消息打印到屏幕上。
如果您不介意搞乱CI系统文件夹中的文件,可以通过将system/database/DB_Driver.php
(第323行,CI 2.0.1)更改为:来在日志文件中获取sql语句p>
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)
检查您是否在插入的表格中为主键定义了自动增量。