0

重複の可能性:
MySQL クエリ ログを有効にする方法は?

MySQL ですべての SQL クエリを追跡する方法はありますか?

Doctrine ORM を使用してエンティティを構築し、データベースから取得しています。Doctrine が生成するクエリを確認したいと考えています。Doctrine ORM を使用してデータベースからデータを取得する Web ページを更新すると、データベースで実行されたクエリをどこで確認できますか?

これは可能ですか?

4

2 に答える 2

0

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*/
于 2012-10-14T09:40:18.827 に答える
0

クエリをログに記録するかどうかはこのアプリケーションに決定させ、すべてのクエリをログに記録する場合は 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 にあります。

于 2012-10-14T09:43:49.410 に答える