Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処

Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処

Posted at March 27,2014 1:55 AM
Tag:[MovableType, TroubleShooting]

Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処方法について紹介します。

この記事は「WWW WATCH - Movable Type で 「エラーが発生しました」 と表示されてログインできなくなった場合の対処」の補足情報として読んで頂ければ幸いです。

2014.05.21追記:本件はMT6.0.3/MT5.2.10/MT5.17で改修されている可能性があります(参考:6.0.3、5.2.10、5.17 リリースノート)。

1.問題

Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」というエラーが発生し、場合によってはログイン不能になるケースがあるようです。

MTのバージョンによって異なると思われますが、このエラーはバージョンアップやブログの作成、ブログの複製、あるいはバックアップから復旧させた場合に発生するようです。

2.原因

原因の1つとして、mt_author_metaテーブルのauthor_meta_typeフィールドの値が「favorite_websites」となっているデータによるものらしいです。

phpMyAdminの表示
phpMyAdmin

favorite_websitesのレコードは、管理画面左上にあるウェブサイト・ブログ選択メニューに表示されたウェブサイトを、最近アクセスした順番に入れ替えるために必要な情報です(余談ですが、favorite_blogsというレコードはブログの順番を並び替えます)。

ウェブサイト・ブログ選択メニュー
ウェブサイト・ブログ選択メニュー

ウェブサイト・ブログ選択メニューはログインしたユーザー別に表示を切り替える必要があるため、ユーザー別のmt_author_metaテーブルにこのレコードが存在します。

favorite_websitesレコードが作られるタイミングは管理画面にアクセスするときなので、管理画面の遷移すべてが対象になります。

プログラム的には以下のルートになります。

MT::App::CMS::build_page
 ↓
MT::App::CMS::build_blog_selector
 ↓
MT::App::CMS::add_to_favorite_websites

3.対処方法

mt_author_metaテーブルの中にあるauthor_meta_typeフィールドの値が「favorite_websites」のレコードをphpMyAdminなどですべて削除することで解消する可能性があります。

データベースを直接操作できない場合、下記のシェルスクリプトの赤色部分について利用中のデータベース情報に書き換え、「delete.cgi」というファイル名で保存し、FTPツールでサーバのMTのインストールディレクトリにアップロードしたあとパーミッションを705などに変更します。

#!/bin/sh
echo "Content-type:text/plain"
echo ""
user="データベースユーザー名"
pass="データベースパスワード"
database="データベース名"
server="localhost"
mysql -h ${server} --user=${user} --password=${pass} ${database} <<eof
delete from ${database}.mt_author_meta where mt_author_meta.author_meta_type = 'favorite_websites';
eof
echo "OK"

アップロード後、ブラウザから、

http://user-domain/mt/delete.cgi

という風にアクセスして、「OK」が表示されれば被疑データをすべて削除することができていると思います。

CGI実行後、再度MTにログインしてみてください。

ここではMySQLの場合のみ掲載していますが、可能であればSQLiteについても情報が分かり次第掲載します。

4.参考サイト

参考サイトは以下です。ありがとうございました。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)