「ブログ移転するかも」の続き。
エラーが起きたりしなければいずれ移転すると思います。
なんて軽く言っていたけど、やっぱりそう簡単にコトは進まなかった・・・。
このココログ版「写真な日々」と同じレイアウトにしようと、インデックスやアーカイブのテンプレートはすぐ書き換えたんだけど、これだけではサイドメニュー(最近書いた記事リストが並んでいる右側メニュー)の「オススメ」などを更新したいときはいちいちテンプレートを書き換えなければならない。やっぱりサイドメニューは共通化して、更新を楽にしたいと思った。
それにはインクルードだろう、ということで調べてみると、MTIncludeを使う方法やSSIのインクルードを使う方法、phpを使う方法など、やり方はいくつかあることが分かった。
一番手っ取り早いのはMTIncludeなんだけど、これだとサイドメニュー単体を更新しただけではブログに反映されない。サイドメニューが入っているアーカイブを再構築しなければ、最新の状態にならないのだ。しかしそれじゃあ意味がない。そもそも再構築を避けたくてインクルードにしようと思っているわけだから。
SSIのインクルードを使うこともできるけど、ウチのサーバの場合、拡張子を.shtmlにしなければならないので、なんとなくダルい。それにどうせなら、ページ分割とか、ココログではできないことをしてみたいと思った。
というわけで、思い切ってphp化してみることにした。
まずはMySQLへの移行作業。データベースを作って、mt.cfgとmt-db-pass.cgiを書き換えるところまではうまくいった。
そしてmt-db2sql.cgiにアクセス。が・・・なんか途中で止まってしまった模様。もう一度mt-db2sql.cgiにアクセスしてみると、こんなメッセージが出た。
Table ‘mt_author’ already exists at mt-db2sql.cgi line 53.
「mt_author」というテーブルはすでにあるよ、というエラーらしい。検索してみたら、やはり同様のエラーでMySQL移行に失敗した例が出てきた。
それによると、どうやらカテゴリを階層化しているとエラーが起きるらしい。それから、mt.cfgの「DataSource ./db」の先頭に「#」は付けないほうがいいらしいということも。
しかしMT関連のテーブルを削除してやり直したらうまくいったという例もあったので、とりあえずそのようにしてみることに。ついでにmt.cfgの「DataSource ./db」から「#」を外して転送し、再びmt-db2sql.cgiにアクセス。・・・また失敗。
むう。やっぱり、カテゴリを全て親カテゴリにしておかないとダメなのか?
そこで、もう一度MT関連のテーブルを削除してからMTにログインしてみた。するとログインはできたものの、テンプレート編集画面やエントリー投稿画面やカテゴリー編集画面へのリンクがなくなっていた。これでは、カテゴリの設定を変えることもできない。
たぶん、テーブルを削除しちゃったから、どこにもデータベースがない状態になってしまったんだろう。
(ちなみに、ブログ自体はちゃんと見えていて、表示がおかしくなったりはしていなかった)
面倒くさくなったので、最初からやり直すことにして、MySQLのデータベース自体を削除した。mt.cfgも最初の状態に戻して、それからまたMTにログインすると元通りになっていた。
なーんだ、最初からMovableTypeをインストールし直さなくても済んだぞ。
と喜んだのもつかの間のこと。
この前ココログから全記事をインポートしたんだけど、あれを少し減らしてから移行作業をしたほうがデータ量も少なくていいだろう、と思って100件くらい削除したら、今度は再構築時にエラーが出るようになってしまったのだ。
An error occurred:
Can’t use an undefined value as a SCALAR reference at lib/MT/Template/Context.pm line 780
何度再構築をかけても、こんなメッセージが出て動かなくなってしまった。新規エントリーを投稿しても同じエラーが出るし、たぶんテンプレートを再構築しても同じだろう。
うぎゃー、本当に壊してしまった・・・。
「Can’t use an undefined value as a SCALAR reference」で検索してみると、やはり対処法がいくつか出てきたんだけど、どうもみんなデータベース関係のエラーらしく、私のとは少し違うみたいだ。
at lib/MT/Template/Context.pm line 780
という部分からすると、テンプレート関係のエラーだとは思うんだけど・・・同じ状況の例が見つからない。
これはやっぱり、MTのインストールからやり直しか~?