Movable Typeがいきなり壊れた!(DBのmt_session)

February 6, 2009

Movable Type ログイン画面

ブログのテンプレートを少し触ろうと、MTにログインして作業をしようとすると、管理画面のページを移動する度に、ログイン画面に飛ばされる現象に急に襲われました。

原因究明

.htaccessをちょこちょこ触っていたので、それが不味かったか思い、.htaccessを元の設定に戻してみたりしましたが、改善されない。

Firefoxがバグったかと思い、Safariでログインしてみても、ページ移動の度に、ログイン画面。

Macの問題か?と思って再起動しても駄目。

バージョンの問題か?っと思って、MTのバージョンを上げて(4.21→4.23)みるも変わらない。

MTの問題ではない、てことはDBを疑ってcoreserverの管理画面から新たにDBを作り、mtにアクセス。インストールが始まるので、素直にしたがって新しいMTにアクセス。

問題なくログイン出来る。

ほぼDBが原因と特定。

で、ここで一旦冷静に

現象

ログインは出来るが、ページ変遷の度に、ログイン画面に毎回飛ばされる。

予想

  • ログインは出来ているので、ログイン自体は問題ない。
  • ログイン情報を持ち回れていないはず。
  • ログイン情報はSessionで持ち回っているはず。
  • Session_IDは、DBで管理されてはず。

私の技術不足でDBは、phpMyAdminでしか扱えないので、phpMyAdmin経由で中身を覗く。 テーブルを一通り見てみると、明らかにおかしい文字が。。。

mtsessionの部分が、構造が書かれず『in use』になっています。明らかにおかしい。

MTのDB

復旧作業

SQL文はイマイチ分からないので、先程、新たに作った正常に動いているMTのDBから、mt_session部分のみphpMyAdminでエクスポートしてみる。

それを、もとのDBにインポートしてみる。SQLエラー

恐らく壊れた部分『mt_session』がエラーの原因の模様。

『mt_session』をゴミ箱マークをクリックして消す。

再びDBにインポートしてみる。成功

これで、MTにログインできページ変遷しても無事動くようになりました。

今回は、壊れた箇所が、『mt_session』だったため、この方法で問題はありませんでしたが、記事部分のデータが格納されている『mt_entry』あたりが壊れると、この方法では取り返せません。

今回は、なぜDBが壊れたのか原因が全く分かりませんでした。 正直かなり戸惑いました。長い間MTを使っていますが、こんな経験は初めてでした。

転ばぬ先の杖ってやつで、定期バックアップは、大事ですね。