2017-02-28 119 views
0

如何在mysql中跟踪source filename命令的执行情况,以便我可以获取已运行的sql脚本的文件名和路径。谷歌没有帮助或可能是我没有使用正确的关键字。
如何跟踪mysql中`source filename`命令的执行

所以,当我执行source ./test/file.sql(最好没有错误) 我想在“source_history”表CURRENT_TIME,文件名(带路径一起),我可以做,如果我能想出如何跟踪的条目。

这将会有很大的帮助,如果有人可以帮助我在保持命令source的轨道。(像一个触发事件表上插入或更新)

(可能是,跟踪所有命令从这个意义上说,然后退出MySQL时,获取查询历史记录并检查source

希望是有道理的。

在此先感谢。

回答

1

问题是source命令不是MySQL命令,它是一个command in MySQL's command line interface,它也被命名为MySQL。

CLI仅将文件内的sql命令传递给MySQL服务器,因此服务器无法识别用于执行该命令的确切文件。

的MySQL自己的文档的source命令(见上面的链接)建议最明显的解决方案:

有时您可能希望你的脚本显示进度信息 用户。为此,您可以插入语句是这样的:

SELECT '<info_to_display>' AS ' ';

所以,simples的方法是创建一个表,在路径字段,事件类型(启动/停止)和时间戳,并添加insert语句记录每个批处理的开始和结束的每个sql文件的开始和结束,并提供在插入语句中硬编码的文件的名称。您可能需要创建一个将这些命令添加到sql文件的脚本。

另一种方法是创建一个批处理文件,该文件接收参数中的.sql文件的路径,调用MySQL的CLI,在mysql中记录批处理的开始,启动.sql文件,然后记录完成MySQL中的批处理。

+0

实际上,在发布问题之前,我们想通过脚本或别名将所有.sql文件追加到运行sql脚本的行。期待更好的可行解决方案。虽然这不是最好的说服力,但它是有用的。非常感谢您的回答! –