2010-03-29

『売上猫くん on MySQL』開発日記 - 番外7 - FileMaker内にMySQLの一般ログを表示する

MySQL の一般ログをFileMakerで表示する方法。

1.MySQLのMySQLデータベースをDSN登録する。
2.my.ini に log-output=TABLE,FILE を指定。
3.以下をMySQLコマンドラインで実行。
mysql> SET @old_log_state = @@global.slow_query_log;
mysql> SET GLOBAL general_log = 'OFF';
mysql> ALTER TABLE mysql.general_log ENGINE = MyISAM;
mysql>ALTER TABLE `mysql`.`general_log` ADD COLUMN `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (`id`);
mysql> SET GLOBAL general_log = @old_log_state;
4.MySQL を再起動。
5.FileMaker のリレーションシップで、上記1で作成したDSNのmysql.general_logテーブル選択。このとき、上記で作成した id を指定。(以下、略)

するとこんな感じでログを表示できる。


FMの自動発行SQLクエリで「?」が頭に点灯したら、ログをチェックするのがよろしいかと。

尚、FM標準コマンドでは general_log テーブルのログは削除できないので、truncate(テーブル内の全行削除) を使用する。以下はFMの「SQLを実行」ステップを使用して、truncate を実行。

参考サイト:一般クエリとスロー クエリのログ出力先の選択

2010/9/24 追記
ログが出力されない場合、mysqlコマンドで
SET GLOBAL general_log = 'ON';
を実行してみる。

2010/10/25 追記
id の属性に AUTO_INCREMENT を追加。

2010/10/15 追記
slow_query についても、上記の要領でFileMaker上に表示可能だが、ログ対象となるクエリ時間の閾値がデフォルトでは10(秒)になっている。この為、ログ書き込みされないと思いこんでしまう。このデフォ値は、my.ini で long_query_time = 1 とするか、set global long_query_time = 1 を実行することにより変更できる。



関連リンク:『売上猫くん on MySQL』開発日記の記事一覧

0 件のコメント: