ピティナ開発者ブログ

全日本ピアノ指導者協会のIT担当者が気まぐれにつづる技術系中心のブログです


MovableType4(MT4)で使われるMySQLテーブルと各カラムの説明

Hiroyuki Noguchiです。

今さらのMovableType4(MT4)ですが……
今回、どうしても調査せざるを得なくなったので、得た知見を記録しておきます。

どうしても調査せざるを得なくなった理由については別記事にて。

ptna.hateblo.jp

前提

MovableTypeって?

数多くある静的CMSのうちの一つです。

www.sixapart.jp

内部で使用されているデータベース

MySQLです。
というわけで、この中身をざっくり見ていきます。

MT4の各テーブル毎のメモ

mt_asset

  • 画像とかの素材=アイテムを管理するテーブル

mt_asset_meta

  • 画像とかに設定されるパラメータが入ってくる
  • 例: image_width 60 みたいな
  • asset_meta_asset_id というカラムがあって、ここに、mt_assetのidが入る
  • このテーブルの固有キーが格納されるカラムは存在しない

mt_association

  • 「ユーザーが特定のブログに対してどういうロールを持っているかなどの関連付けを管理するためのもの」

※Qiitaのコメントで @rryu さんから教えていただきました。

mt_author

  • ログインユーザ
  • パスワードが暗号化もされずに文字列格納されている……

mt_author_meta

  • 「meta系のテーブルはMT::Authorなどのクラスのカラム定義で型がstring metaのようになっているものの保存に使われます。その他にカスタムフィールドの値の保存などに使われます」

※Qiitaのコメントで @rryu さんから教えていただきました。

mt_blog

  • ブログ管理
  • 「ブログ記事」ではない

mt_blog_meta

  • ブログ管理に関連するmeta系テーブル。 mt_author_meta の項を参照。

mt_category

  • ブログ記事とかウェブページとかに設定できる「カテゴリ」管理
  • category_blog_id で、どのブログで使われるかを決める

mt_category_meta

  • カテゴリ管理に関連するmeta系テーブル。 mt_author_meta の項を参照。

mt_comment

  • コメント管理
  • comment_blog_id と comment_entry_id とで、どれへのコメントかが決まる

mt_comment_meta

  • コメント管理に関連するmeta系テーブル。 mt_author_meta の項を参照。

mt_config

  • MT全体の設定
  • 1レコード1カラム内に、改行区切りで大量の設定が書かれている

mt_entry

  • 記事管理
  • 「ブログ記事」も「ウェブページ」も、全部このテーブル内で管理されている
  • ディレクトリはここで管理されていないらしい……
  • 各カラムについて
    • entry_id :固有キー
    • entry_blog_id :どのブログ内の記事か
    • entry_authored_on :公開日時(デイトタイム型)
    • entry_atom_id :固有キーとか色々合成されているフィールド
      • 入力される書式例 : tag:hoge.com,2017:/blog_name//99.123456
      • 上記例の 2017 にあたる数字は、このレコードの entry_authored_on の year 部分である
      • 上記例の 99 にあたる数字は、このレコードの entry_blog_id である
      • 上記例の 123456 にあたる数字は、このレコードの entry_id である
    • entry_basename :ファイル名
    • entry_class :entry または page
      • entry :ブログ記事
      • page :ウェブページ
    • entry_title :タイトル
    • entry_text :本文
    • entry_excerpt :要約文?
    • entry_category_id :カテゴリっぽいけれど実は使われていない。罠。酷い。

mt_entry_meta

  • 記事管理に関連するmeta系テーブル。 mt_author_meta の項を参照。

mt_field

  • 入力フィールド管理
  • field_blog_id で、どのブログで使われるかを決める
  • field_obj_type で、「ブログ記事」「ウェブページ」などのどこに表示されるか決まる

mt_fileinfo

  • 静的ページのファイル名・保存先ディレクトリなどの管理
  • 各カラムについて
    • fileinfo_id :固有キー
    • fileinfo_archive_type :よくわからない……
      • 値の例 :index, Page, Individual, Monthly
    • fileinfo_entry_id :mt_entryとの外部キー
    • fileinfo_file_path :サーバ内の絶対path
    • fileinfo_url :ドメイン以下のファイルpath
    • fileinfo_template_id :mt_templateとの外部キー
    • fileinfo_templatemap_id :mt_templatemapとの外部キー

mt_ipbanlist

  • アクセス禁止IPの管理とか

mt_log

  • MTのシステムログ記録用
  • かなり巨大に膨れあがるので、後生大事にとっておく必要もなさそう

mt_notification

  • アドレス帳に登録されているメールアドレスに、MTの更新記録などを送信するための管理用
  • 内輪向けサイトなら使われることがあるのかな……

mt_objectasset

  • 記事とアイテムとを紐づけるための中間テーブル

mt_objectscore

※Qiitaのコメントで @rryu さんから教えていただきました。

mt_objecttag

  • タグ管理
  • mt_tag は古い。こちらは新しい。

※Qiitaのコメントで @rryu さんから教えていただきました。

mt_permission

  • mt_author(ユーザ)の権限管理

mt_placement

  • カテゴリと記事とを紐付けるための中間テーブル

mt_plugindata

mt_role

  • 権限グループ

mt_session

  • セッションデータ
  • 定期的に掃除して良いと思われる

mt_tag

  • こちらは古い。 mt_objecttag が新しい。

※Qiitaのコメントで @rryu さんから教えていただきました。

mt_tbping

mt_tbping_meta

mt_template

  • テンプレート管理
  • 各カラムについて
    • template_id :固有キー
    • template_blog_id :どのブログか
    • template_identifier : NULL許可という謎のフィールド
    • template_name :管理画面上で表示される名称
    • template_outfile :静的ファイルとして出力される場合のファイル名
    • template_text :本文
    • templatetype
      • 値の例 :index, archive, comment_preview, comment_response, dynamic_error, individual, popup_image, search_results, widget, widgetset…

mt_template_meta

  • テンプレート管理に関連するmeta系テーブル。 mt_author_meta の項を参照。

mt_templatemap

  • テンプレートが静的ファイルに出力される際の形式マスタ的な
  • templatemap_archive_type
    • 値の例 :Category, Individual, Page, Yearly, Monthly…

mt_touch

  • 設定変更をおこなったブログや時間の管理
  • これ要るのか……??

mt_trackback

mt_ts_exitstatus, mt_ts_funcmap, mt_ts_job

  • 「TheSchwartzというジョブキューで使います。tools/run-periodic-tasks などで使用しています。」

※Qiitaのコメントで @rryu さんから教えていただきました。

  • つまり、プラグインで作成されたテーブル?ということで、MT4内にデフォルトで存在しているわけではなさそうですね。

オマケ:MT4 と MT6 との差異

MT6については、以前、別件でザーッと見たことがあるので、その時に知ったことです。

概要

  • 大枠の変化は無い
  • MT6にしか無いテーブルがいくつかある(後述)
  • それにともなって、キーとなるidカラムが有ったり無かったり
  • つまり、一部テーブル間のリレーションには変更があって、それが大きな影響に繋がり、単純なMT4→MT6インポートでは済まない原因になっている

MT4にしか無いテーブル

  • というのは無い

MT6にしか無いテーブル

  • mt_accesstoken
  • mt_author_summary
  • mt_entry_rev
  • mt_entry_summary
  • mt_failedlogin
  • mt_filter
  • mt_formatted_text
  • mt_template_rev

今回、これらについては注記しない。

(著: Hiroyuki Noguchi)
この記事は現在0人が閲覧中