Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処
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の表示
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.参考サイト
参考サイトは以下です。ありがとうございました。
- MovableTypeプラグインの独自CGIをNginxに対応させる方法
- Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
- 旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法
- MT6.2のファイルアップロードで「Undefined subroutine &POSIX::strftime」になる問題の対処
- Movable Typeのファイルアップロードで「アップロードしたファイルは大きすぎます。」というエラーになる場合の対処
- Movable Typeのパスワード変更で「URLが不正です。」というエラーなる件についての対処
- Movable TypeでMTPageNextタグが効かなくなる不具合について
- Movable Typeの復元で「Request-URI Too Large」になるときの対処
- サーバ故障と「Connection error: Too many connections」エラーおよびMySQLテーブル破損について
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method &quot;label&quot; on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
- XREA/CORESERVERでMovable TypeのCaptchaが表示されない不具合について