MT4クリーンアップグレード

  • 投稿日:
  • by
  • カテゴリ:
テンプレートタグMTIfIsDescendantでエラーが発生しました

のエラーを引き続き調査中である。

別のサーバーで試しても同じエントリでエラーを起こすので、メモリの使用量の問題では無いことまでは判明した。
テンプレートが問題なんでしょう。きっと。
該当エントリが複数カテゴリに所属していることに気づき、カテゴリを一つにしてフルリビルドすると、エラーは発生しなくなったものの、タイムアウトになってしまう。
うーん。

仕方が無いので、Movable Type4を新規インストールしつつエントリのデータを移行する方法を考えてみました。
名付けて「クリーンアップグレード」です(今考えた)。

手順
1:MT4用のデータベースを作成する

# mysqladmin -uroot -pXXXXX create mt4

2:Movable Type3のデータのバックアップを作成する
こんなシェルスクリプトを作って実行!

#!/bin/sh

for TABLE in mt_author mt_blog mt_category mt_comment mt_entry mt_fileinfo mt_ipbanlist mt_notification mt_permission mt_placement mt_plugindata mt_session mt_tbping mt_template mt_templatemap mt_trackback mt_tag mt_objecttag; do
    mysqldump -uroot -pXXXXX -t -c mt $TABLE > $TABLE.dump
done

-tをつけることでCREATE TABLE文をなくし、-cをつけて
insert TABLE values (value1, value2,...)
の形じゃなくて
insert TABLE (column1, column2,...) values (value1, value2,...)
の形にして、テーブルレイアウトが変わっていてもinsertできるようにした

3:Movable Type4のファイル普通にインストールする

4:エントリとコメントに初期データが入ってしまっているので削除する

# mysql -uroot -pXXXXX mt4
mysql> delete from mt_entry;
mysql> delete from mt_comment;

5:バックアップファイルから最低限必要なデータだけデータベースに戻す

# mysql -uroot -pXXXXX mt4 < mt_author.dump
# mysql -uroot -pXXXXX mt4 < mt_entry.dump
# mysql -uroot -pXXXXX mt4 < mt_category.dump
# mysql -uroot -pXXXXX mt4 < mt_placement.dump
# mysql -uroot -pXXXXX mt4 < mt_comment.dump
# mysql -uroot -pXXXXX mt4 < mt_trackback.dump
# mysql -uroot -pXXXXX mt4 < mt_tbping.dump

6:足りないデータを補う

# mysql -uroot -pXXXXX mt4
mysql> update mt_entry set entry_authored_on = entry_created_on, entry_created_by = entry_author_id;

これをやらないとエントリーの公開日時が空白になっちゃう

7:mt.cgiにアクセスすると一応エントリ・カテゴリ・コメント・トラックバックのデータは引き継がれつつ、クリーンな状態のMovable Type4が出来上がる
一応これで動作するけど、正式なやり方ではないので不具合が出てしまう可能性もある。真似する人は気をつけてください

8:Movable Typeの管理画面から必要な設定を投入
・ブログ記事のファイル名を「%e%x」に
・「アーカイブをサイトパスとは別のパスで公開する」にチェック
・モブログ用のユーザが存在していたので、新しいブログでもauthor_id=2で作成する
・登録/認証で「認証なしコメント」を許可した後、CAPTCHAプロバイダを「Movable Type 既定」にする

ここまでやったのですが、新しいテンプレートを元に以前のデザインにあわせて行くのがめちゃくちゃ大変なことに気づいてしまい、作業中止。

そのまま移行してもエラーになっちゃうし、初期化してからデータを引き継いでも大変だし、どうしようか悩み中である。