重複の可能性:
MySQL クエリ ログを有効にする方法は?
MySQL ですべての SQL クエリを追跡する方法はありますか?
Doctrine ORM を使用してエンティティを構築し、データベースから取得しています。Doctrine が生成するクエリを確認したいと考えています。Doctrine ORM を使用してデータベースからデータを取得する Web ページを更新すると、データベースで実行されたクエリをどこで確認できますか?
これは可能ですか?
重複の可能性:
MySQL クエリ ログを有効にする方法は?
MySQL ですべての SQL クエリを追跡する方法はありますか?
Doctrine ORM を使用してエンティティを構築し、データベースから取得しています。Doctrine が生成するクエリを確認したいと考えています。Doctrine ORM を使用してデータベースからデータを取得する Web ページを更新すると、データベースで実行されたクエリをどこで確認できますか?
これは可能ですか?
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 インターフェイスを実装する必要があります。echo と var_dump を使用して標準出力にログを記録する単純なデフォルトの実装は、Doctrine\DBAL\Logging\EchoSQLLogger にあります。