MovableTypeでテキストのカスタムフィールドをテキスト(複数行)に移行する方法

やっほぉ。鳥だよ。

ここだけの話、MovableTypeってびみょーーーに融通効かないところがちょとちょこあってさ。

書いてないけど、「テキスト」カスタムフィールドには255文字の文字数制限があるのさ。それ以上になると勝手にチョッキンされるんだ(切り取られる)。

で、それに困った時にはどーするかっていうと、実質文字数が無制限に近い「テキスト(複数行)」ってのに変更してやるのが良いと思うのさ。

でもね、

それがボタン一個でできる!・・・わけではなくて、一旦消して作り直さないと行けないわけで。

「そんな面倒なことやってられっかー」(ノ`´)ノ彡┻┻どがしゃーん

てわけで、以下に移行方法だよ。phpMyAdminが使える前提。
あと、試したMTのバージョンは5.02の場合だよ。もしかしたら他のバージョンのMTだと違うかも。ちょっと見た感じだと、MT4系も同じ構造だったよ。
※もち自己責任でっ

  1. おもむろにphpMyAdminを立ち上げる。
  2. 「どうしようどうしよう」と言いながら、mt_fieldテーブルを開く。
  3. 慌てふためきながら、field_tagが対象のタグになっているものを探して編集。あとfield_basenameをメモるφ(.. )
  4. あわあわ言いながら、field_typetextareaに変更する。クエリで言うならこんな感じ。

    UPDATE `mt_field` SET `field_type` = 'textarea' WHERE `field_tag` = '(対象のテキストフィールドのタグ)'
  5. そこでいきなり冷静になって、念のために以下のクエリを実行して、データの確からしさを確認する。

    SELECT * FROM `mt_entry_meta` WHERE `entry_meta_type` = 'field.(メモしたfield_basename)' LIMIT 0 , 30
  6. 確認が終わったら「オレのミスだーっ」と叫びながら、以下のクエリを実行する。

    UPDATE `mt_entry_meta` SET `entry_meta_vclob` = `entry_meta_vchar_idx` where `entry_meta_type` = 'field.(メモしたfield_basename)'
  7. 最後にもう一度、以下のクエリを実行してentry_meta_vclobにデータが入っていることを指さし確認。

    SELECT * FROM `mt_entry_meta` WHERE `entry_meta_type` = 'field.(メモしたfield_basename)' LIMIT 0 , 30

いじょ!

でわでわ。