メールフォームプラグインのインストール時にアップグレードに失敗した時の対処

拙作のメールフォームプラグインをインストールする際に、まれにデータベースのアップグレードに失敗するサーバーがあります。
はっきりとした原因はつかんでいませんが、MySQLのバージョンや、Perlのデータベース関係のモジュールのバージョンの関係ではないかと思います。

アップグレードに失敗した場合でも、手動でテーブルを追加すれば、メールフォームプラグインが動作する場合があります。
その方法を紹介します。

1.注意点

今回紹介する方法は、phpMyAdminを使ってデータベースを直接に操作します。
そのため、操作に失敗するとデータベースが壊れることもあり得ます。
作業の前に、あらかじめデータベースをバックアップしておいて、元に戻せるようにしておいてください。

2.中途半端なテーブルを削除

アップグレードの際に、中途半端にテーブルが作られている可能性があります。
MTのデータベースに「mt_mailform_setting」というテーブルがあれば、そのテーブルを削除します。

3.テーブルの作成

次に、MTのデータベースを操作できる状態にしてから、以下のSQLを実行して、テーブルを作成します。

CREATE TABLE `mt_mailform_setting` (
  `mailform_setting_id` int(11) NOT NULL AUTO_INCREMENT,
  `mailform_setting_author_id` int(11) DEFAULT NULL,
  `mailform_setting_auto_reply` tinyint(4) DEFAULT NULL,
  `mailform_setting_blog_id` int(11) NOT NULL,
  `mailform_setting_body_template_id` int(11) DEFAULT NULL,
  `mailform_setting_class` varchar(255) DEFAULT 'mailform_setting',
  `mailform_setting_common_template_id` int(11) DEFAULT NULL,
  `mailform_setting_description` mediumtext,
  `mailform_setting_email_bcc` mediumtext,
  `mailform_setting_email_cc` mediumtext,
  `mailform_setting_email_confirm` tinyint(4) DEFAULT NULL,
  `mailform_setting_email_from` varchar(255) DEFAULT NULL,
  `mailform_setting_email_from_type` int(11) DEFAULT NULL,
  `mailform_setting_email_to` varchar(255) DEFAULT NULL,
  `mailform_setting_email_to2` mediumtext,
  `mailform_setting_error_check_fields` mediumtext,
  `mailform_setting_error_check_in_preview` tinyint(4) DEFAULT NULL,
  `mailform_setting_error_msg` mediumtext,
  `mailform_setting_error_specific_check` mediumtext,
  `mailform_setting_error_template_id` int(11) DEFAULT NULL,
  `mailform_setting_form_template_id` int(11) DEFAULT NULL,
  `mailform_setting_mail_subject` varchar(255) DEFAULT NULL,
  `mailform_setting_must_check_fields` mediumtext,
  `mailform_setting_post_template_id` int(11) DEFAULT NULL,
  `mailform_setting_preview_template_id` int(11) DEFAULT NULL,
  `mailform_setting_reply_subject` varchar(255) DEFAULT NULL,
  `mailform_setting_reply_template_id` int(11) DEFAULT NULL,
  `mailform_setting_rmail_from` varchar(255) DEFAULT NULL,
  `mailform_setting_title` varchar(255) DEFAULT NULL,
  `mailform_setting_use_ajax` tinyint(4) DEFAULT NULL,
  `mailform_setting_wait_msg` mediumtext,
  PRIMARY KEY (`mailform_setting_id`),
  KEY `mt_mailform_setting_class` (`mailform_setting_class`),
  KEY `mt_mailform_setting_title` (`mailform_setting_title`),
  KEY `mt_mailform_setting_blog_id` (`mailform_setting_blog_id`)
);

4.mt_configテーブルの書き換え

次に、「mt_config」というテーブルを書き換えます。

mt_configテーブルには、レコードが1つだけあるはずです。
そのレコードを編集する状態にして、「config_data」というフィールドの値を調べます。
その値の中に以下の部分がなければ、以下の部分をconfig_dataフィールドの最後に追加して、レコードを保存しなおします。

PluginSchemaVersion mailform=1.01

5.テーブルの接頭語を変えている場合

データベースを複数作れないサーバーに、複数のMTをインストールするために、テーブル名の先頭の接頭語を変えている場合もあると思います。
この場合、ここまでの話で出てきた「mt_」の接頭語を、ご自分で変えた接頭語にすべて置き換えてください。

ただし、テーブル名の接頭語を変えることは、MTの動作保証外のことですので、プラグインの動作も保証できません。
この点はご容赦ください。

MT Cloud Starter Kit
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください