在插入或更新时获取完整的MySQL查询字符串

需要MySQL的帮助,因为它并不是我的forte.所以任何帮助是赞赏.

我的网站上出现了UPDATE或INSERT缺少值的问题.这在网站上的其他功能引起了一些问题,但是我无法找到在任何类中完成UPDATE或INSERT的位置.

有什么办法,也许是一个MySQL触发器,我可以添加到这些表,这将允许我存储UPDATE或INSERT的原始或完整的查询.我已尝试日志记录,但适用于整个数据库,占用太多的磁盘空间.

提前感谢任何回复.

PS:目前,PHP类在我们还处于开发阶段有点混乱,所以添加更新或插入函数的异常将花费太多时间.所以请集中回答这个问题.再次感谢.

您可以使用以下语句将当前SQL查询作为字符串获取:

SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()

所以你要做的就是创建一个TRIGGER,这个TRIGGER在你的表上执行以下操作:INSERT OR UPDATE操作:

>获取当前语句
>将其插入名为“app_sql_debug_log”的新表中

好!这是触发声明SQL:

DELIMITER |

CREATE TRIGGER log_queries_insert BEFORE INSERT ON `your_table`
FOR EACH ROW
BEGIN
    DECLARE original_query VARCHAR(1024);
    SET original_query = (SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID());
    INSERT INTO `app_sql_debug_log`(`query`) VALUES (original_query);
END;
|
DELIMITER ;

您将必须创建两个触发器 – 一个用于更新查询,另一个用于插入查询.触发器将新查询作为字符串插入app_sql_debug_log表的名为query的列中.

http://stackoverflow.com/questions/10628640/get-full-mysql-query-string-on-insert-or-update

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在插入或更新时获取完整的MySQL查询字符串