TRASH-NEWS MovableTypeにサインインできない不具合はテーブルの破損が原因だった

順路
  1. ホーム
  2. 2008年
  3. 05月
  4. 10日
  5. この記事 [現在地]
Search?
お知らせ
社会人近況 (2008/09/07 0:00)
配属されてからこの方、ほぼ毎日終電での帰宅が続いているうえに毎週泊まりがけの出張が入っているため、1週間に1回か2回更新できればマシといった状況です。実はまだTRASH-NEWSは概要ページもリンクコーナーもろくに作っていないような有様なんですけれども、気づけばそろそろ1周年+すでに50万ヒット。……なんだこのえもいわれぬグダグダ感は……。とりあえずヴェスペリア堪能してから考えますね。
1 2 3

MovableTypeにサインインできない不具合はテーブルの破損が原因だった

TRASH-NEWSは
生きていくうえではあまり役立ちそうにないサイトです
初出時刻
2008年05月10日 23時56分 投稿
最終更新時刻
2008年05月11日 01時15分 改訂
  • この記事をはてブする
  • Yahoo!ブックマークに登録

このTRASH-NEWSはMovableTypeというブログ管理ツールを利用しているのですが、その管理ページにおいてときおり“ページを移動するたびにログインを求められる”という不具合に出会うことがあります。

通常、管理ページのインデックスにアクセスする際1回ログインしてしまえば、以降そのログイン情報が保持され一定期間ログイン用ページに飛ぶことなく管理ページを行き来できます。つまりログインは数ヶ月に1ぺんくらい求められるだけで、あとは直接管理ページの中にアクセスできる、というわけです。

しかしこれが僕の場合ダメで、何故か毎回毎回ログイン用ページに飛ばされます。はっきりいって、超面倒であり超不便。もう1ヶ月くらいこの状態が続いてるし……なんとかしないと!

MovableTypeにおけるログインの処理(適当解釈)

まずはログインという行為がプログラム的にどう処理されているかをご紹介します(MovableTypeのバージョンはMT4.1、データベースとしてMySQLを使用している場合を想定)。なお僕は具体的な仕様書などを読んだことはなく、“こういう風にできているんだろうな”という憶測の元書いていますので正確さは著しく欠きますが、処理の流れについてはこの記事においてはさして重要ではと考えているためご容赦ください(この記事は対処法をお知らせするために書いています)。ちなみにMovableTypeではログインのことを『サインイン』と呼んでいますので適宜読み替えてください。

ログイン用ページで入力・送信した管理者名とパスワードのデータは、オンラインにあるMovableType用データベース(内のテーブル)のひとつ『mt_author』の『author_password』というフィールドに記録されているデータと照合されます。ここで正しいと判定されれば(管理者名の'author_password'と一致すれば)『mt_session』というデータベースに正しくログインしたという証拠としてログイン情報(『session_name』:管理者名、ほか)が書き込まれます。ここでログインが成功した場合の処理は終了、管理ページへのアクセスが許可されます。以降管理ページの各ページを移動するたびに『mt_session』にログイン情報が書き込まれているかがチェックされ、書き込まれていれば(ログイン状態が保持されていれば)該当ページが読み込まれ、書き込まれていなければログイン用ページへと強制変遷されます。

MovableTypeのログインの有無の判定について(憶測)

ここでログイン用ページへと強制変遷されるのはおもに3パターンの状況においてありえます。1つはサインアウト(ログアウト)していた場合。2つめはブラウザがCookieを受け入れない設定になっている場合。そして3つめはデータベースへのアクセスができなかった場合

1つめについてはログアウトした時点で『mt_session』の該当部分が“ログアウトした”という風に書き換えられるため、ログイン状態とみなされないのは当然です。2つめについて、プログラム的にログイン状態を判定しているのはセッションという機能なのですが、これはCookieを利用しているためCookieを拒否しているブラウザではログインの有無が判定できません(参考記事)。よってムリ。そして3つめ。これがガンです。なぜならデータベースにアクセスできないというのはさまざまな要因が考えられるからです。データベースが過負荷で倒れた、データベースが壊れた、データベースへのアクセスが制限された、などなど……。ただでさえMovableTypeはデータベースを多用しているプログラムなので、データベースにまつわるバグや不具合は山のようにありますし、ありえます。

諸悪の根源はテーブルの破損だった(確信)

今回僕が1ヶ月近く“ページを移動するたびにログインを求められる”という不具合に見舞われていたのは、まさに3つめ、『データベースへのアクセスができなかった』ことが原因でした。

今日ふとこの原因に思い当たり、phpMyAdminというデータベース管理ソフトでMovableTypeの利用しているデータベース群にアクセスしてみたところ……『mt_session』テーブルが破損していることがわかりました

phpMyAdmin標準の機能『テーブルを分析する』の結果

実行した SQL: SHOW INDEX FROM `mt_session` ;

MySQLのメッセージ: #145 - Table './(DBの名前)/mt_session' is marked as crashed and should be repaired

これか……これがいけなかったのか……!! てっきりデータベースへのアクセス不良(遅延とか)が原因だと思っていたのですが、テーブルが壊れていたのが原因だったのか……!! そりゃ壊れてたらログイン状態が判定できるわけがありません。

原因が分かればあとは対処するだけ。phpMyAdmin標準の機能として『テーブルを修復する』というすんばらしくわかりやすいものがあるのでそれを利用します(もちろん修復用のSQLで打ち込んでもOK)。

phpMyAdmin標準の機能『テーブルを分析する』の結果

SQL の結果

ホスト: (ナイショ) データベース: (DBの名前) 生成時間: 2008 年 5 月 10 日 23:38 生成環境: phpMyAdmin 2.10.1 / MySQL 5.1.20-beta 実行した SQL: ANALYZE TABLE `mt_session`; 行: 3 Table Op Msg_type Msg_text (DBの名前).mt_session analyze Error Table './(DBの名前)/mt_session' is marked as crashed and should be repaired (DBの名前).mt_session analyze Error Table 'mt_session' is marked as crashed and should be repaired (DBの名前).mt_session analyze error Corrupt

実行した SQL: REPAIR TABLE `mt_session`; 行: 1 Table Op Msg_type Msg_text (DBの名前).mt_session repair status OK

status OK

心強い……心強くわかりやすいメッセージ!

確認してみると無事テーブルの内容を参照できました。これできっと大丈夫。MovableTypeの管理者用画面にアクセスし、ログイン。適当なページへアクセスします。これまではまたログイン用ページへ飛ばされていましたが……

アクセスできたァァ!

再ログインを求められることなく無事アクセスすることができました。地味な感動を覚えました。これで画像のアップもできる……(画像などのファイルアップロードにはURLの打ち込みで対応できるGETではなくPOSTを利用しているためログインが保持され続けていないとダメ)。

MTの自動保存機能はまさに“使えない味方が最大の敵”の体現

何故『mt_session』が壊れたかについて思い当たるフシがひとつあります。それは……

自動保存機能……ッッッ!! (これまでのTRASH-NEWSにおける自動保存機能との死闘)

記事やテンプレートなどを勝手に自動保存してくれる自動保存機能の保存先はずばり『mt_session』。つまり重いデータが数秒おきに自動保存されるような設定(=比較的デフォルト)にしておくとデータベースへの負荷がとんでもないことになりかねないということに。まぁ普通のサーバーならばその程度でテーブルが壊れることもないかとは思いますが、何せこのTRASH-NEWSが利用しているのは貧弱サーバーなので……考えられなくも、ない……ッッ!

またいつこのような不具合に遭遇するかわかりませんが、なんにせよ原因と対処策がわかったのでひと安心です。あーすっきりした。お悩みの方がいましたらまずはお近くのphpMyAdminへ。これが今回体得した一番の知恵。

サイト内検索
検索する
このサイトについて
  • サイト名 : TRASH-NEWS
  • 分類 : ニュースとネタのサイト
  • ジャンル : 井戸端からアレゲまで
  • もっと詳しく見る
最近の記事
05月23日の記事
  1. ボタンひと押し即生成、『サークルカットジェネレータ』公開開始
04月01日の記事
  1. あの人気シリーズを作れる? 『テイルズオヴメーカー』本日公開
03月27日の記事
  1. 現在の4月のアレ進捗度30%!!
02月21日の記事
  1. 4月のアレで使う【中二なキャラクター】イラストをご提供ください
01月24日の記事
  1. サークル名ジェネレータを作ってみた
01月11日の記事
  1. 新作(※4月のアレではない)のスクリーンショット公開
01月01日の記事
  1. コミケ77(3日目)に行ってきた
12月31日の記事
  1. コミケ77、男は黙って8:00に出発
12月24日の記事
  1. FFXIIIの検索サイトを作ってみました
12月21日の記事
  1. FFXIIIの検索サイトを作ってみている
日刊人気記事ランキング
2010年11月21日のぶん
1
もうやめて下さい!! 泣いてる子もいるんですよ!!
38
2
マリオっぽい自作のゲーム改めしょぼんのアクション公開開始
28
3
FFT-A2のクリア後レビューと感想(ネタバレなし)
17
4
テイルズオブヴェスペリアの感想 【ストーリー・キャラクター編】
14
5
サークル名ジェネレータを作ってみた
12
6
Windows XP SP3インストールで不具合が起きることが発覚
11
7
ついうっかりマリオWiiとグレイセスとFFXIIIとDQVIを予約(以下略)
11
8
○○が可愛すぎて生きるのが辛い
10
9
“マリオっぽいもの”のステージを編集するエディタが公開
9
10
3Dの初音ミクを躍らせるフリーソフトMikuMikuDanceがスゴい
9

2010年11月22日 0時更新

人気記事ランキング

カテゴリ(折畳表示)
ニュース・ネタ
サブカテゴリを開く
俺研究舎
サブカテゴリを開く
お知らせ
サブカテゴリを開く
特集・企画
サブカテゴリを開く
管理人近況
サブカテゴリを開く
カスタムアーキテクチャ
1回めのようこそ!
ゲストさん
  • 文字の大きさ : 12px
  • フォント : MS Pゴシック
  • レイアウト : 3段組
  • カスタムする
カレンダー
2008年5月
«  04月 - 06月  »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
管理人について
管理人 : 八満かシアン
文系なのにエンジニア、なんてこったい(八満のほう)
今頃たぶん聴いている曲
Little Busters! by Rita
月別アーカイブ
2010年
2009年
2008年
2007年
最近記事に掲載した画像
サークルカットジェネレータ、公開開始です!!
サークルカットジェネレータ、公開開始です!!
テイルズオヴメーカー偽記事の画像
テイルズオヴメーカー偽記事の画像
シガアレ作ってる、の図
シガアレ作ってる、の図
手描き初音ミク
手描き初音ミク
iPhoneっぽいUIを実際にiPhoneで表示してみて比較
iPhoneっぽいUIを実際にiPhoneで表示してみて比較
画像に関するリンク
ユーティリティ
RSSフィード
ソーシャルブックマーク
  • iGoogle
  • はてなアンテナにTRASH-NEWSを追加する TRASH-NEWSのはてなブックマーク数 この記事を含むはてなブックマーク
サイトプロフィール
Powered by
  • Movable Type 4.1 + [XHTML + CSS + JavaScript] + PHP
  • TRASH-NEWS / Hachiman_Cian 2007-
このページについて
題名
MovableTypeにサインインできない不具合はテーブルの破損が原因だった
内容
  • このTRASH-NEWSはMovableTypeというブログ管理ツールを利用して
TRASH-NEWS ロゴ
TRASH-NEWS ロゴ
TRASH-NEWS : http://www.trash-news.net/