如何在mysql中跟踪source filename命令的执行情况,以便有已运行的sql脚本的文件名和路径。谷歌没有帮助,也可能是我没有使用正确的关键字。
因此,当我执行source ./test/file.sql (最好没有错误)时,我希望在"source_history“表中有一个带有current_time的条目,即文件名(以及路径),如果我能够找到跟踪的方法,就可以这样做。
如果有人能帮助我跟踪命令source(类似于表上插入或更新的触发器事件),这将有很大帮助。
(可能是这样跟踪所有命令,然后退出mysql,获取查询历史记录并检查是否为source)
希望这是合理的。
提前谢谢。
发布于 2017-02-28 09:53:47
问题是,source命令不是MySQL命令,而是MySQL命令行接口中的命令,也称为MySQL。
CLI只将文件中的sql命令传递给MySQL服务器,因此服务器无法知道用于执行命令的确切文件。
MySQL自己的文档-- source命令(参见上面的链接)提出了最明显的解决方案:
有时,您可能希望脚本向用户显示进度信息。为此,可以插入如下语句:
SELECT '<info_to_display>' AS ' ';
因此,简单的方法是创建一个表,其中包含用于路径、事件类型(start / stop)和时间戳的字段,并将insert语句添加到记录每个批的开始和结束的每个sql文件的开始和结束,并提供insert语句中硬编码的文件的名称。您可能希望创建一个脚本,将这些命令添加到sql文件中。
另一种方法是创建一个批处理文件,该文件接收参数中的.sql文件的路径,调用mysql的CLI,在MySQL中记录批处理过程的开始,启动.sql文件,然后在MySQL中记录批处理的完成。
https://stackoverflow.com/questions/42503122
复制相似问题