Movable Type 4のデータベース拡張機能の不具合?

MTOS(Movable Type Open Source)について話をするメーリングリストの中で、Ogawa Memorandaの小川さんが、MT4の不具合について投稿をしていました。
先日公開した「カテゴリーとフォルダの並べ替えを行うプラグイン」にも関係しますので、このプラグインをお使いの方は、必ず続きをお読みください。

1.不具合の内容

Movable Type 4では、プラグインでデータベースを拡張する機能が強化されていて、既存のテーブル(mt_entry)などに新たなフィールドを追加することができます。
この関係で、以下のような不具合が起こったそうです。

  • テーブルを拡張するようなプラグインをインストールします。
  • Movable Typeにログインすると、テーブルにフィールドを追加するためにUpgraderが動作します。正常に終了し、ログインできます。
  • インストールしたプラグインを削除します。この状態ではプラグインが追加したフィールドが残ったままになりますが、正常に動作します。
  • テーブルを拡張する別のプラグインをインストールします。
  • Movable Typeにログインします。するとUpgraderが動作しますが、エラーが起きます。
  • エラーを無視してページをリロードすると、一見うまくいったかのような表示が出ます。
  • 最初のプラグインが拡張したテーブルが破壊されます。

2.問題の追試

拙作の「カテゴリーとフォルダの並べ替えを行うプラグイン」も、カテゴリーのテーブルにフィールドを追加しています。
そのため、上述の問題が起こる可能性があるので、こちらの環境で追試してみました。

昨日Movable Type 4.01β2が公開されましたが、その環境を使って、以下の手順を行ってみました。

  • カテゴリーとフォルダの並べ替えプラグインをインストールします。
  • このプラグインを削除します。
  • エントリーのテーブルにフィールドを追加するダミーのプラグインをインストールします。

ところが、この手順では上述の問題は起こりませんでした。
プラグインの組み合わせや、MTが動作している環境によって、不具合が出たりでなかったりするようです。

3.フィールドを追加するプラグインを使う際の注意

上で述べたように、プラグインの組み合わせによっては、プラグインを削除すると問題が起こる可能性があります。
テーブルにフィールドを追加するタイプのプラグインをインストールした場合は、そのプラグインは削除しないようにしてください。

前述したように、拙作の「カテゴリーとフォルダの並べ替えを行うプラグイン」も、このタイプのプラグインに該当しますので、削除しないでください。