可能重复:
如何启用 MySQL 查询日志?
有没有办法跟踪 MySQL 中的每个 SQL 查询?
我使用 Doctrine ORM 构建实体并从数据库中获取它们,并想看看 Doctrine 产生了哪些查询。所以当我刷新一个使用 Doctrine ORM 从数据库中获取一些数据的网页时,我在哪里可以看到在数据库中执行的查询?
这可能吗?
可能重复:
如何启用 MySQL 查询日志?
有没有办法跟踪 MySQL 中的每个 SQL 查询?
我使用 Doctrine ORM 构建实体并从数据库中获取它们,并想看看 Doctrine 产生了哪些查询。所以当我刷新一个使用 Doctrine ORM 从数据库中获取一些数据的网页时,我在哪里可以看到在数据库中执行的查询?
这可能吗?
启用 MySQL 的通用查询日志:
一般查询日志是mysqld在做什么的一般记录。当客户端连接或断开连接时,服务器将信息写入此日志,并记录从客户端接收到的每个 SQL 语句。当您怀疑客户端出现错误并想确切了解客户端发送到mysqld的内容时,通用查询日志非常有用。
MySQL内部
set global general_log = 1;
set global log_output = 'table' /* so we can query it*/
select * from general_log /* to select */
truncate general_log /*if you got to much data*/
set global general_log = 0 /*to turn it off again*/
让这个应用程序决定是否要记录查询,如果要记录所有查询,则在 MySQL 端记录查询。
Doctrine 在包中有一个内置的记录器接口和一个演示记录器。来自http://docs.doctrine-project.org/en/2.0.x/reference/configuration.html#sql-logger-optional:
<?php
$config->setSQLLogger($logger);
$config->getSQLLogger();
获取或设置记录器,用于记录 Doctrine 执行的所有 SQL 语句。记录器类必须实现 Doctrine\DBAL\Logging\SQLLogger 接口。可以在 Doctrine\DBAL\Logging\EchoSQLLogger 中找到使用 echo 和 var_dump 记录到标准输出的简单默认实现。