如何在MySQL日志(慢速日志,进程列表等)中识别使用Query Builder和DQL调用或执行使用Doctrine创建的查询的函数/方法?该项目正在Symfony中开发,但在perl和PHP中还有其他部分没有symfony。
在我们项目的某些部分,例如在perl中,我们只是在查询中添加注释。例如:
SELECT /* FooScript-FooMethod */ col1, col2 FROM TABLE t1 WHERE col1 >= '2016-01-08'
有没有办法用Doctrine做到这一点?我的意思是,我可以在Doctrine中为生成的查询添加注释,还是在查询中添加额外的信息,以便可以在学说日志之外识别它?
答案 0 :(得分:0)
根据MySQL文档,有不同类型的日志可以帮助您管理MySQL服务器。根据您的情况,您需要slow query logs
和general logs
(以查看任何客户端触发的查询)。
我提到的这些类型的日志默认由MySQL禁用。要检查日志是否已启用,请运行以下查询并查看结果:
SHOW VARIABLES LIKE '%log%';
在返回的结果中搜索以下变量:
slow_query_log
general_log
如果这些变量的值为OFF
,则表示MySQL服务器中尚未启用日志。
启用Logs
的最佳方法是在MySQL配置(my.cnf)中设置这些变量,该配置可能位于/etc/my.cnf
(在Linux中),此位置可能不同,具体取决于您的MySQL安装。
在配置中设置日志变量:
在config的[mysqld]
部分添加以下内容:
[mysqld]
slow_query_log=ON
slow_query_log_file=/opt/mysql/stage-slow.log #path to slow logs
#General Log: Logs each SQL query statement received from clients
general_log= ON
general_log_file=/opt/mysql/stage.log #path to general query logs
使用这些变量更新配置后,您需要启动MySQL服务才能生效。
运行service mysqld restart
(仅限Linux)以重启MySQL服务。