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

順路
  1. ホーム
  2. 2008年
  3. 05月
  4. 10日
  5. この記事 [現在地]
Search?
お知らせ
ここ数日更新が滞っていますが…… (2008/04/13 13:31)
4月より社会人となったため、時間の作り方がいまいちつかめないため、不定期の更新となります。まぁ……ニコニコメーカーでもお楽しみください!
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
  • 分類 : ニュースとネタのサイト
  • ジャンル : 井戸端からアレゲまで
  • もっと詳しく見る
最近の記事
08月28日の記事
  1. 初音ミクの星間飛行や振り付けランカちゃんなど最近見たニコニコ動画
08月25日の記事
  1. 初音ミクと小林オニキスさんの新曲『ORCA』がまたも素晴らしい
08月19日の記事
  1. こもんちゃん(ニコニ・コモンズ)で解説する『PhotoshopCS3でアニメgifを編集する方法』
08月18日の記事
  1. ブルースクリーン・ブルース
08月17日の記事
  1. 夏コミのために有給を取ったにもかかわらず
07月16日の記事
  1. マルタと釘宮のために買ったWii、Priceless.
07月12日の記事
  1. 2008年7月に発売されるマンガのスケジュール表
07月06日の記事
  1. I'veコンピアルバム 『master groove circle』など気になったニュース
07月05日の記事
  1. テイルズオブ釘宮やSound Blaster Play!など購入検討物リスト
07月02日の記事
  1. うみねこのなく頃に体験版はマンガ版を読んでからのプレイがオススメ
日刊人気記事ランキング
2008年08月28日のぶん
1
Windows XP SP3インストールで不具合が起きることが発覚
122
2
初音ミクの星間飛行や振り付けランカちゃんなど最近見たニコニコ動画
43
3
テイルズオブ新作『テイルズ オブ ヴェスペリア』のまとめと推察
40
4
Windows XPのSP3は思いのほかスゴいらしい
33
5
XP SP3における不具合報告と32bitOSでのメモリのRAMDisk化の話
32
6
画像解析系ジェネレータ・BannerCodeBattler2(仮)着手開始
28
7
テイルズオブヴェスペリアはXbox360で発売決定?
21
8
こもんちゃん(ニコニ・コモンズ)で解説する『PhotoshopCS3でアニメgifを編集する方法』
18
9
ぬらりひょんの孫のつららは細かすぎて伝わらない萌え
18
10
うみねこのなく頃に体験版はマンガ版を読んでからのプレイがオススメ
18

2008年08月29日 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
管理人について
管理人 : 八満かシアン
文系なのにエンジニア、なんてこったい(八満のほう)
今頃たぶん聴いている曲
ニョキニョキ by 鬼殺し半分子with落☆武者
月別アーカイブ
2008年
2007年
最近記事に掲載した画像
ラタトスクとWiiはマルタと釘宮のために存在している
ラタトスクとWiiはマルタと釘宮のために存在している
夏海ケイ作画『うみねこのなく頃にEP1』が面白い
夏海ケイ作画『うみねこのなく頃にEP1』が面白い
Opera9.5でニコニコ動画のキャッシュを管理しやすくするスクリプト
Opera9.5でニコニコ動画のキャッシュを管理しやすくするスクリプト
Opera9.5正式版のちょっと困ったポイント
Opera9.5正式版のちょっと困ったポイント
マジカノ最終巻、カプレカ1巻など
マジカノ最終巻、カプレカ1巻など
画像に関するリンク
ユーティリティ
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/