XAMPPでMySQLのログを各バージョン別で確認する方法

WindowsOSのPCでWebプログラムの開発をしています。開発環境としてはXAMPPを使っています。WordPressなどを動かしたときに実際にはどのようなSQL文が実行されるのか、知りたくなりMySQLのログを取れるように設定してみました。そのことについて書きます。

MySQLで出力されるログの種類

MySQLから出力されるログはいくつかの種類があります。実際にはどんな種類があるのか検索してみて、こちらのサイトを見つけました。

MySQLのログの種類について知ろう

エラーログ、一般クエリログ、バイナリログ、リレーログ、スロークエリログの5種類があるようです。このうちエラーログデフォルトで出力されるように設定されているため、たまに参照することもあり知っています。

今回はWordPressである動きをしたときにどのようなSQL文を投げているのかを知りたいので 一般クエリログ を取るようにしたいと思います。

一般クエリログが出力されるように設定する XAMPP1.8.1 [PHP: 5.4.7]編

一般クエリログはデフォルトでは出力しない設定になっているので、出力されるようにしたいと思います。

XAMPPをインストールしてあるフォルダにある mysql\bin\ フォルダを開きます。そこに my.ini という設定ファイルがありますので開きます。

[mysqld] というキーワードで検索をします。

検索すると [mysqld] が見つかりだいたいこんな感じの設定になっています。一番下に書いてある log_error という行にエラーログをどこに出力するかが書いてあります。mysql\data\ フォルダを見ると mysql_error.log というファイルが見つかるかと思います。ここにmysqlのエラーログが書き込まれています。

この行の下に、一般クエリログを出力する行を追加します。
 

保存します。XAMPPのフォルダにある mysql_stop.bat で一旦MySQLを止めてから mysql_start.bat で再立ち上げします。

XAMPPにインストールしてあるWordPressのサイトを開いてから mysql\data\ を見ると myquery.log というファイルができていました。

開くと、
 

こんな感じで一般クエリーログが出力されていました。

一般クエリログが出力されるように設定する XAMPP5.6.3 [PHP: 5.6.3]編

と、自分が使う分にはこれで良かったのですがblogに書くにあたり「XAMPPのバージョンがPHP5.4のころのものだったから新しいXAMPP5.6でも同じようにできますと書こう」と思い、念のため確認してみました。

同じように my.ini に1行追加して実行しようとすると、mysqlが立ち上がりません(>_<)。何度も見直して全く同じようにいれているのに…と悩みましたがエラーメッセージをよく見てみました
 

このエラーメッセージを元にググってみると同じようなエラーが出てしまった人のページが見つかり、ログファイルの指定だけでは足りないことが分かりました。ということで

このように変更しました。ログファイルも general_log_file= という書き方になっています。これで無事にログが取れることを確認しました。

ということは、と先ほど修正した XAMPP1.8.1 [PHP: 5.4.7] をこの新しい方法に書き直し、MySQLを立ち上げ直して確認したところこの書き方でも問題なく動いていることが分かりました。

XAMPPの各バージョンでの一般クエリログ取得方法を調べてみました

私のPCにはあと2つのバージョンのXAMPPが入っているのですべてについて確認してみました。

確認した2バージョンの他に XAMPP1.7.7 [PHP: 5.3.8]、 XAMPP1.7.1[PHP: 5.2.9] がインストールされています。試してみて分かった結果をマトリックスで表示します

log=”myquery.log” general_log = ON
general_log_file=”myquery.log”
XAMPP5.6.3 [PHP: 5.6.3] NG OK
XAMPP1.8.1 [PHP: 5.4.7] OK* OK
XAMPP1.7.7 [PHP: 5.3.8] OK* OK
XAMPP1.7.1[PHP: 5.2.9]  OK NG

このような結果になりました。一番古い、XAMPP1.7.1の時点では log= と1行で指定する方法しか有効ではありません。このバージョンまではこれが正しい指定方法だったようです。XAMPP1.7.7とXAMPP1.8.1ではどちらの書き方でもログは取れていましたが、MySQLを立ち上げた時に

 

このようなワーニングが出ていました。これはきっと1.7.7あたりから新しいログの指定方法を採用しているのだけれども、いきなりそれまでの指定方法をエラーにすると色々問題が起こるのでワーニングは出すけれども一応動くという状況のようです。この状況のものを OK* としました。XAMPP5.6.3 あたりからはもう旧来の方法ではエラーとするようにしたようです。

と、色々なことが分かりました(^^)/。

おまけ:MySQLの一般クエリログでみたかったもの、と指定は忘れずに解除しましょうということ

この一般クエリログで見たかったのはWordPressで検索をしたときにどのようなSQL文になっているの?ということでした。

エディタ
 という文字を検索したときのSQL文は

SELECT SQL_CALC_FOUND_ROWS  wordpress_posts.ID FROM wordpress_posts  WHERE 1=1  AND (((wordpress_posts.post_title LIKE ‘%エディタ%’) OR (wordpress_posts.post_content LIKE ‘%エディタ%’)))  AND wordpress_posts.post_type IN (‘post’, ‘page’, ‘attachment’, ‘mtssb_article’, ‘faq’) AND (wordpress_posts.post_status = ‘publish’ OR wordpress_posts.post_author = 1 AND wordpress_posts.post_status = ‘private’)  ORDER BY wordpress_posts.post_title LIKE ‘%エディタ%’ DESC, wordpress_posts.post_date DESC LIMIT 0, 16

こんな感じでした!これが見たかったのですっきりしました。

あと、このログはWordPressで検索したときだけでなく表示する時には必ず出力されてしまうのでファイルの大きさが膨大になってしまいます。なので確認が終わったら忘れずに

 

コメントアウトするか、

 


OFF
 にしておいた方が良さそうです。

[Amazon sponsored link] PHPプログラム 関連本

兎本美佳

ブログを見た人がそのままできたらいいなと思って、できるだけ丁寧に書いています。blogに書いたようなネタの有償対応のご相談は「ゆうそうと」へいただければと思います(^^)/
無償での対応をご希望の場合は、コメントをいただけましたら可能な場合はコメントを返させていただきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサー広告
ブログをメールで購読

メールアドレスを記入して購読すれば、更新をメールで受信できます。

261人の購読者に加わりましょう

トップへ戻る