Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql ully working solution.Tiberiu-Ionut Stan@是的,使用PHP和CodeIgniter。我在这里发布了一个很好的解决方案:Ravinder@我认为它会记录数据库中的所有SQL语句,您可以选择将其记录在文件或表中。正如我提_Mysql_Logging_Triggers - Fatal编程技术网

Mysql ully working solution.Tiberiu-Ionut Stan@是的,使用PHP和CodeIgniter。我在这里发布了一个很好的解决方案:Ravinder@我认为它会记录数据库中的所有SQL语句,您可以选择将其记录在文件或表中。正如我提

Mysql ully working solution.Tiberiu-Ionut Stan@是的,使用PHP和CodeIgniter。我在这里发布了一个很好的解决方案:Ravinder@我认为它会记录数据库中的所有SQL语句,您可以选择将其记录在文件或表中。正如我提,mysql,logging,triggers,Mysql,Logging,Triggers,ully working solution.Tiberiu-Ionut Stan@是的,使用PHP和CodeIgniter。我在这里发布了一个很好的解决方案:Ravinder@我认为它会记录数据库中的所有SQL语句,您可以选择将其记录在文件或表中。正如我提到的,我已经尝试过了,但这会消耗大量磁盘空间,因为它会记录所有内容。如果对两个表而不是整个数据库进行插入或更新,我只考虑获取SQL语句。如果我错了,你能给我一个例子,说明当对两个特定的表(例如TableA和TableB)进行更改时,如何让通用查


ully working solution.Tiberiu-Ionut Stan@是的,使用PHP和CodeIgniter。我在这里发布了一个很好的解决方案:Ravinder@我认为它会记录数据库中的所有SQL语句,您可以选择将其记录在文件或表中。正如我提到的,我已经尝试过了,但这会消耗大量磁盘空间,因为它会记录所有内容。如果对两个表而不是整个数据库进行插入或更新,我只考虑获取SQL语句。如果我错了,你能给我一个例子,说明当对两个特定的表(例如TableA和TableB)进行更改时,如何让通用查询日志记录SQL语句。这可能有效。将常规查询日志设置为保存到日志表中,并添加一个
INSERT
触发器,该触发器只允许将
如“%INSERT%”和
如“%tableA%”
的查询实际插入日志表中(这样可以节省空间)@ypercube-好主意!但不确定开销是多少。如果不涉及存储过程,这非常有效。我们正在寻找获取SPs内部日志的方法,以查看是什么确切的查询导致了数据更改。谢谢。作为MySQL的新手用户,您编写的两个触发器是针对两个表的,例如TableA和TableB。那么我需要为每个表添加触发器吗?对不起,如果这个问题听起来很傻,但我从来没有在MySQL上做过很多工作,触发器对我来说是全新的。希望收到您的来信。我正在努力理解表格进程列表。目前,我还没有在桌面上做任何事情。我所做的只是简单地插入一条新记录,并对这两个表进行更新,但当我查询表PROCESSLIST时,该表中没有显示我刚才所做的查询。我有什么遗漏吗?再次感谢。触发器仅由一个事件触发-例如选择或删除。在本例中,您需要INSERT和UPDATE操作的触发器,因此每个表必须有两个触发器,一个在INSERT语句中触发,另一个在UPDATE语句中触发。注意:“在插入
您的_表之前”
“更改插入关键字以更新第二个触发器。祝你好运PROCESSLIST表显示当前正在工作的查询。当触发器工作时,您的查询仍然存在,可以访问它。我总是从。。。作为最后一个查询。。知道为什么吗?
SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()
rename_function('mysql_query', 'mysql_query_orig');
override_function('mysql_query', '$query', 'return override_mysql_query($query);');

function override_mysql_query($query)
{
    $result = mysql_query_orig($query);

    if (stripos($query, "mytablename") !== FALSE) {
        // log, echo, etc.
    }

    return $result;
}