2005年7月26日

MySQL移行失敗、そしてMT再構築エラー

category: MovableType — abetomo @ 16:21:50

ブログ移転するかも」の続き。

エラーが起きたりしなければいずれ移転すると思います。

なんて軽く言っていたけど、やっぱりそう簡単にコトは進まなかった・・・。

このココログ版「写真な日々」と同じレイアウトにしようと、インデックスやアーカイブのテンプレートはすぐ書き換えたんだけど、これだけではサイドメニュー(最近書いた記事リストが並んでいる右側メニュー)の「オススメ」などを更新したいときはいちいちテンプレートを書き換えなければならない。やっぱりサイドメニューは共通化して、更新を楽にしたいと思った。

それにはインクルードだろう、ということで調べてみると、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のインストールからやり直しか~?

このエントリーは

投稿クライアントの「BlogWrite」

により投稿されました。

2 件のコメント

  1. おつかれさまです。
    引越はいろいろ大変ですね。
    私も先月全面的に引っ越しましたが…。(興味があるようでしたら顛末記載せてます。)

    やはりデータベースもMTそのものも全部クリアにしてやり直す方が楽かもしれませんね。面倒ですが。

    ちなみに私も引っ越しに当たって一部をphpモジュール化しましたが、結果、更新がかなり楽になりました。
    うまく動くようになるといいですね。

    コメント by かれん — 2005年7月26日 @ 22:25:43

  2. かれんさん、コメントありがとうございます。

    その後、再構築エラーの原因が分かって、なんとか復旧できました!その顛末も後で書くつもりですけど、とりあえずMT再インストールしなくても済みそうです。

    かれんさんのMT構築記事、実は参考にさせてもらってます!というか、すべてはMySQLがうまく動いたらの話なんですが・・・モジュール化とか。
    php化すると、いろいろ便利そうですよねー。

    コメント by abetomo — 2005年7月26日 @ 23:33:37

このコメント欄の RSS フィード

コメントフォームは現在閉鎖中です。

Copyright 2004-2009 abetomo, All rights reserved.
Powered by WordPress 2.6.2