Php CodeIgniter是否可以在错误日志中显示MySQL查询?
我的CodeIgniter日志中总是出现错误,例如Php CodeIgniter是否可以在错误日志中显示MySQL查询?,php,codeigniter,logging,Php,Codeigniter,Logging,我的CodeIgniter日志中总是出现错误,例如 ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1 但如果没有上下文,这并没有多大帮助。是否有任何方法可以记录导致此错误的查询?检查您是否在插入的表中为主键定义了自动增量。我只是快速浏览了一下系统/数据库/DB_Driver.php(第323行)文件,它没有使用您选择的任何设置记录SQL查询。但是,如果您处于db_调试模式
ERROR - 2011-04-12 00:06:44 --> Query error: Duplicate entry '1391280167' for key 1
但如果没有上下文,这并没有多大帮助。是否有任何方法可以记录导致此错误的查询?检查您是否在插入的表中为主键定义了自动增量。我只是快速浏览了一下
系统/数据库/DB_Driver.php
(第323行)文件,它没有使用您选择的任何设置记录SQL查询。但是,如果您处于db_调试模式,则应将这些消息打印到屏幕上
如果您不介意弄乱CI系统文件夹中的文件,您可以通过将system/database/DB_Driver.php
(对于CI 2.0.1,第323行)更改为:
首先,您可以使用$this->db->last\u 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 );
注意:根据您的应用程序逻辑和流量,随着时间的推移,这可能会在错误日志中增加大量的额外数据,因此我建议仅将其用作临时故障排除工具
希望这有帮助。我没有。我有许多具有许多唯一索引的表,所以很难找到它。能够查看查询会让事情变得更好。将Codeigniter的错误报告设置为E_ALL,并确保database.php文件中的db_debug设置为TRUE。检查此扩展名以了解CI错误处理:我启用了E_ALL和db_debug,但查询仍然没有显示。感谢链接到扩展Marko,这是一个可能的解决方案。但是,没有本地的方法可以获得此功能吗?@Marko Aleksić:链接已经失效
error_log( "Last database query: " . $query );