今さらのMovableType4(MT4)ですが……
どうしても調査せざるを得なくなったので、得た知見を記録しておきます。
どうしても調査せざるを得なくなった理由については別記事にて。
Qiita - MovableType4(MT4)でウェブページを同一MT内の別ブログに移す
前提
MovableTypeって?
数多くある静的CMSのうちの一つです。
公式サイト
内部で使用されているデータベース
MySQLです。
というわけで、この中身をざっくり見ていきます。
MT4の各テーブル毎のメモ
mt_asset
- 画像とかの素材=アイテムを管理するテーブル
mt_asset_meta
- 画像とかに設定されるパラメータが入ってくる
- 例: image_width 60 みたいな
- asset_meta_asset_id というカラムがあって、ここに、mt_assetのidが入る
- このテーブルの固有キーが格納されるカラムは存在しない
mt_association
- 「ユーザーが特定のブログに対してどういうロールを持っているかなどの関連付けを管理するためのもの」
※コメントで @rryu さんから教えていただきました。
mt_author
- ログインユーザ
- パスワードが暗号化もされずに文字列格納されている……
mt_author_meta
- 「meta系のテーブルはMT::Authorなどのクラスのカラム定義で型がstring metaのようになっているものの保存に使われます。その他にカスタムフィールドの値の保存などに使われます」
※コメントで @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
- トピックや記事のお気に入り登録機能 のためのもの
※コメントで @rryu さんから教えていただきました。
mt_objecttag
- タグ管理
- mt_tag は古い。こちらは新しい。
※コメントで @rryu さんから教えていただきました。
mt_permission
- mt_author(ユーザ)の権限管理
mt_placement
- カテゴリと記事とを紐付けるための中間テーブル
mt_plugindata
- プラグイン管理
mt_role
- 権限グループ
mt_session
- セッションデータ
- 定期的に掃除して良いと思われる
mt_tag
- タグ管理
- こちらは古い。 mt_objecttag が新しい。
※コメントで @rryu さんから教えていただきました。
mt_tbping
- トラックバック管理
mt_tbping_meta
- トラックバック管理に関連するmeta系テーブル。 mt_author_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 などで使用しています。」
※コメントで @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
今回、これらについては注記しない。