MT3.3.7 から MT5へのアップデート、DBの文字化けとか対策メモ

今更、Movable Type 3.37から5.0.4へのアップデートを行ったのでメモ。

今回アップデートしたのは、MT4リリース時に一度アップデートを試みたが、文字化けしたので面倒になってアップデートせずに今の今まで3.37のままで運用してきたブログ。サーバーの引っ越しに伴いそろそろ潮時を感じたのでアップデートすることにした。

文字化けの原因は、そもそものデータベーステーブルのエンコードが「latin1_swedish_ci」になっているからutf8で文字化けするというものだった。これは、PHP My Admin で編集(一度binaryにしてからutf8に変換)すればいいようなので手作業で行った。

  • Php My Adminにログインして、表示タブで文字化けのテーブルを探して、構造タブの鉛筆アイコンから編集する。
  • 照合順序をbinaryにして種別を覚えておく。
  • もう一度鉛筆アイコンから、照合順序をutf8_general_ciにして、種別を元に戻す。
  • 返り値が空、もしくは文字化けしていないテーブルはそのままにしておく。
  • 文字化けが直ったら、そのデータベースをエクスポート。
  • エディタで開いてlatin1をutf8で一括置換して上書き保存。
  • データベースの中身を削除してから、それをインポート。

phpmyadmin_latin1toutf8.png

データベーステーブルがutf8になったので、いよいよMT5へアップデートする。

アップデートの前にデータベースのバックアップとファイルのバックアップを行い、現在使用している「mt」フォルダを「mt_3」等にリネームして、トラブル発生時にいつでも戻せるようにしておく。

エディターのオートセーブを無効にする為に、mt-config.cgi に以下のオプションを追加。

AutoSaveFrequency 0

エントリー数が多い時は、再構築を10エントリー毎に行うオプションも追加。

EntriesPerRebuild 10

キーワードからタグへのコンバート

エントリーのキーワードをMT 3.3以降のタグにコンバートするCGIスクリプトMTKeywords2Tagsを使って、キーワードをタグに一括変換する。

そして、これから投稿するエントリーのキーワードをタグに登録できるように、投稿時にエントリーのキーワードを「タグ」として登録するプラグインKeywordsAsTagsをインストールする。

プラグイン関係の更新

エントリーテンプレートで <MTMostRelatedEntries> は存在しませんエラー。タグでの関連エントリー表示はTagSupplementalsを使うことにする。エントリーテンプレートのMTタグを <MTRelatedEntries> に切り替え。

CatEntries3.0.plは <MTCatEntries> が再構築でエラーが出たのでやめた。

アーカイブページを分割するプラグインMT Extensions: MTPaginate 1.28はそのまま使用可能。だけど、静的ページ用ページ分割プラグイン:PageButeの方はトップページも分割できるしSEO的にもよさげなのでこちらに切り替えた。(参考:MT5 ブログ記事が増えてきたら、PageButeプラグインによりページ分割。 – むらごんの思い込みWeblog

カテゴリー名の頭の3桁の数字(例:「010ハードウェア」)を切り取るcutfirstcharはそのまま使える。

Mailformをニューバージョンに更新したら、テンプレートが増えたりMTタグでエラーが出たので面倒になって、設置の簡単なPHPメールフォームAjaxMailを使用することにした。

同じカテゴリーのエントリー一覧に <MTTagInvoke> を使っていると再構築でエラーが出るので、MT4でMTタグのアトリビュート内で更にタグを使用する | スカイアークシステムで紹介されているタグに変更した。