MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでイベントのメタデータを取得する方法|INFORMATION_SCHEMA.EVENTSの使い方

INFORMATION_SCHEMA.EVENTSでイベントのメタデータを取得する

MySQLで定義済みイベントの詳細情報(メタデータ)を確認したい場合は、INFORMATION_SCHEMAデータベースのEVENTSテーブルを利用します。このテーブルには、イベント名・定義者・実行タイプ・スケジュール・ステータスなど、イベントに関するあらゆる情報が格納されています。

次のSQL文を実行すると、特定のスキーマに属するイベントのメタデータを縦型表示(\G)で取得できます。

mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS
       WHERE EVENT_NAME LIKE '%event%'
         AND EVENT_SCHEMA = 'query'\G

実行結果は以下のようになります。

*************************** 1. row ***************************
          EVENT_CATALOG: def
           EVENT_SCHEMA: query
             EVENT_NAME: testing_event6
                 DEFINER: root@localhost
               TIME_ZONE: SYSTEM
              EVENT_BODY: SQL
        EVENT_DEFINITION: INSERT INTO event_message(message,generated_at) values('EVENT ALTERED', NOW())
              EVENT_TYPE: ONE TIME
              EXECUTE_AT: 2017-11-22 20:03:52
          INTERVAL_VALUE: NULL
          INTERVAL_FIELD: NULL
                SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                  STARTS: NULL
                    ENDS: NULL
                  STATUS: DISABLED
           ON_COMPLETION: PRESERVE
                 CREATED: 2017-11-22 20:02:52
            LAST_ALTERED: 2017-11-22 21:01:17
           LAST_EXECUTED: 2017-11-22 20:03:52
           EVENT_COMMENT:
              ORIGINATOR: 0
CHARACTER_SET_CLIENT: cp850
COLLATION_CONNECTION: cp850_general_ci
   DATABASE_COLLATION: latin1_swedish_ci

*************************** 2. row ***************************
          EVENT_CATALOG: def
           EVENT_SCHEMA: query
             EVENT_NAME: testing_event_with_preserves
                 DEFINER: root@localhost
               TIME_ZONE: SYSTEM
              EVENT_BODY: SQL
        EVENT_DEFINITION: INSERT INTO event_MESSAGES(Message, generated_at) Values('Altered',NOW())
              EVENT_TYPE: RECURRING
              EXECUTE_AT: NULL
          INTERVAL_VALUE: 1
          INTERVAL_FIELD: MINUTE
                SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                  STARTS: 2017-11-22 21:03:01
                    ENDS: NULL
                  STATUS: DISABLED
           ON_COMPLETION: PRESERVE
                 CREATED: 2017-11-22 20:35:12
            LAST_ALTERED: 2017-11-22 21:04:42
           LAST_EXECUTED: 2017-11-22 20:35:12
           EVENT_COMMENT:
              ORIGINATOR: 0
CHARACTER_SET_CLIENT: cp850
COLLATION_CONNECTION: cp850_general_ci
   DATABASE_COLLATION: latin1_swedish_ci
2 rows in set (0.00 sec)

出力結果の主なカラムの意味

  • EVENT_CATALOG / EVENT_SCHEMA / EVENT_NAME: イベントのカタログ名、所属データベース、イベント名
  • DEFINER: イベントを作成したユーザー(例:root@localhost)
  • EVENT_BODY / EVENT_DEFINITION: イベント本体の種類と、実際に実行されるSQL文
  • EVENT_TYPE: 「ONE TIME」は1回のみ実行、「RECURRING」は繰り返し実行を表す
  • EXECUTE_AT: 1回限りのイベントの場合の実行予定日時
  • INTERVAL_VALUE / INTERVAL_FIELD: 繰り返しイベントの実行間隔とその単位(例:1分ごと)
  • STARTS / ENDS: 繰り返しイベントの開始日時と終了日時
  • STATUS: イベントの有効/無効状態(ENABLED / DISABLED)
  • ON_COMPLETION: 実行完了後の扱い。「PRESERVE」ならイベント定義は削除されずに残る
  • CREATED / LAST_ALTERED / LAST_EXECUTED: 作成日時、最終更新日時、最終実行日時

補足:SHOW EVENTSとの違い

同様の情報は SHOW EVENTS FROM スキーマ名; でも確認できますが、表示されるカラムは限られています。SQL_MODEや文字コード(CHARACTER_SET_CLIENTなど)といった詳細情報まで確認したい場合は、INFORMATION_SCHEMA.EVENTSを直接参照する方法がおすすめです。

  1. MySQLテーブルのカラム名を取得する方法【SHOW・DESCRIBE活用ガイド】

    SHOWコマンドでカラム名を取得するMySQLでは、SHOWコマンドを使うことで、テーブルのカラム(列)名を簡単に確認できます。カラム名だけでなく、データ型やNULL許可、キー情報なども一緒に取得できるのが特徴です。基本構文show columns from テーブル名;サンプルテーブルの作成まず、動作確認用に「DemoTable」というテーブルを作成します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName varchar(

  2. MySQLで設定したインデックスを確認・表示する方法【SHOW INDEXコマンド】

    MySQLで作成済みのインデックスを確認したい場合は、SHOWコマンドを使用します。この記事では、実際にテーブルとインデックスを作成しながら、インデックス情報を表示する手順をわかりやすく解説します。インデックスを表示する基本構文テーブルに設定されたインデックスの一覧を取得するには、以下の構文を使用します。show index from テーブル名;サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。以下の例では、自動採番される主キー「Id」と、姓名を格納するカラムを持つテーブルを定義しています。mysql> create table DemoTable (