有沒有一種方法來跟蹤在MySQL中每個SQL查詢?
我使用Doctrine ORM構建實體並從數據庫中獲取它們,並希望看到Doctrine生成的查詢是什麼。所以當我刷新一個使用Doctrine ORM從數據庫獲取數據的網頁時,我可以在哪裏看到在數據庫中執行的查詢?
這可能嗎?
有沒有一種方法來跟蹤在MySQL中每個SQL查詢?
我使用Doctrine ORM構建實體並從數據庫中獲取它們,並希望看到Doctrine生成的查詢是什麼。所以當我刷新一個使用Doctrine ORM從數據庫獲取數據的網頁時,我可以在哪裏看到在數據庫中執行的查詢?
這可能嗎?
啓動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*/
讓該應用程序決定是否要記錄查詢,如果你想要記錄的所有查詢上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中找到。'
谷歌'打開mysql日誌記錄',是你說的那種東西嗎? – Cups
這不會告訴我們查詢屬於哪個HTTP請求。 – reinierpost