2012-10-14 26 views
0

可能重複:
How to enable MySQL Query Log?MySQL - 如何跟蹤每個查詢?

有沒有一種方法來跟蹤在MySQL中每個SQL查詢?

我使用Doctrine ORM構建實體並從數據庫中獲取它們,並希望看到Doctrine生成的查詢是什麼。所以當我刷新一個使用Doctrine ORM從數據庫獲取數據的網頁時,我可以在哪裏看到在數據庫中執行的查詢?

這可能嗎?

+0

谷歌'打開mysql日誌記錄',是你說的那種東西嗎? – Cups

+0

這不會告訴我們查詢屬於哪個HTTP請求。 – reinierpost

回答

0

啓動MySQL的general query log

一般查詢日誌是什麼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*/ 
0

讓該應用程序決定是否要記錄查詢,如果你想要記錄的所有查詢上MySQLs側登錄查詢。

Doctrine在包中有一個內置記錄器接口和一個演示記錄器。從http://docs.doctrine-project.org/en/2.0.x/reference/configuration.html#sql-logger-optional

<?php 
$config->setSQLLogger($logger); 
$config->getSQLLogger(); 

獲取或設置用於登錄的原則執行所有SQL語句的記錄。記錄器類必須實現Doctrine \ DBAL \ Logging \ SQLLogger接口。使用echo和var_dump記錄到標準輸出的一個簡單的默認實現可以在Doctrine \ DBAL \ Logging \ EchoSQLLogger中找到。'