ゴルフバカの気まぐれブログ
MTが突然、構築エラーになった
その他ブログ・サーバー

MTが突然、構築エラーになった

2010年10月22日

先日、とつぜんMovableTypeの動作がおかしくなりました。

記事を保存すると以下のエラー表示がでるようになりました。

同じように困っている方がいると思うので備忘録的に対処方法を掲載しておきます。

err.jpgCan't call method "execute" on an undefined value
 
"execute" ん?なんじゃそりゃ?
"はダブルクォーテーションの文字参照なので
Can't call method "execute" on an undefined value
ということみたいですが、突然何でエラーが発生したのかよくわかりません。
ソースを一切いじってないし。。
 

現象を調べてみると、記事単体は作成できているようなのですが、メインページのindex.htmlとブログ記事リストページのblog.htmlのインデックステンプレートの再構築でエラーになっているようでした。

困った。。記事の更新ができないぞ。。。

index.htmlのソースのどこに問題が発生しているのかを探るために部分部分をコメントアウトしてエラーの場所が特定できました。

記事の画像をランダムにサムネイル化している部分でエラーが発生するようになっていました。

sum.jpg

このサムネイル画像の部分のソースでエラーが発生しています。

今まで動作していたのに何でだろう?とりあえずその部分をコメントアウトしたらindex.htmlは構築できるのでコメントアウトすることに。

しかしblog.htmlのほうはサムネイル画像がないのに同じエラーがでます。

んー。。。謎だ。。。

とりあえずもう少し詳しく調べるために

まずMovable設定ファイル mt-config.cgi に以下の行を追加して調べてみました。

DebugMode 1
すると先ほどのエラーメッセージが以下のように表示されるようになりました。
<pre>Can't call method &quot;execute&quot; on an undefined value
at *****/extlib/Data/ObjectDriver/Driver/DBI.pm line 127.
</pre> 
※ *****の部分は私のMT環境のパスが記載されていました。
DBI.pmってデータベースのモジュールです。
データベースがおかしくなったのかなぁ。こりゃまずいな。
と思い、同じようなことで困っていた人がいないか調べてみたら以下のサイトにたどり着きました。

Minase's Blog - FYA 

http://www.fya.jp/blog/2009/06/03/mt/#extended

——————————————————————————————–(記事を抜粋)

Can’t call method “execute” on an undefined value at */extlib/Data/ObjectDriver/Driver/DBI.pm line 127.

エントリーを投稿するとエラーが表示されるようになりました。
エントリー数は1000少しです。

早速調べてみるとテンプレートモジュール「ヘッドライン」の以下のタグが問題の引き金であることがわかりました。

<MTEntries sort_order=”descend” lastn=”9999″>

200づつ分割して処理させる為に、以下のように編集することで問題を回避できました。

<mtSetVarBlock name=”ent_count”><$MTBlogEntryCount$></mtSetVarBlock>
<mt:for var=”arc_loop” from=”0″ to=$ent_count increment=”200″>
<MTEntries sort_order=”descend” lastn=”200″ offset=$arc_loop>
*
</MTEntries>
</mt:for>

値をあまり大きくするとエラーになるようです。

——————————————————————————————–(記事を抜粋)

 

ふむふむ、MTEntiesで大量の記事を一度に処理をすると上記のエラーが出るようです。

サムネイルの処理は全てのの記事のデータから処理していますし、blog.htmlのページもブログの記事一覧のページなので全ての記事を処理しています。

実際、私のブログの記事もちょうど1000件を超えたところでエラーが出始めました。

原因はこれだ!!

 

全ての記事を処理するのに私のソースでは<MTEntries lastn=”0″>

としていたので該当する部分を上記のようにループ処理で分割で処理するようにしたら解決しました。

水瀬さん、ありがとうございました!

関連記事

ブログをスマホ対応にしました

ブログをスマホ対応にしました

当ブログは、以前から一部、スマホに対応していたのですが、 中途半端な状態だったので時代の流れにも逆らえず、今回、完全にスマホ対応することにしました。 「MH M

2019年2月17日

GDOブログから記事を完全に引越し完了

GDOブログから記事を完全に引越し完了

2008年1月23日にGDOブログで「ゴルフバカの気まぐれブログ」を開設。 その約1年半後の2009年6月7日にGDOブログの容量が当時100MBだったこともあ

2011年2月19日

LastYearEntries プラグインとMovable Type 4

LastYearEntries プラグインとMovable Type 4

Open MagicVox.net で公開されている「去年の今頃はこんな記事を書いていました」という記事リストを作成する便利なプラグインのLastYearEnt

2010年8月14日

サヨナラロリポ、こんにちはさくら

サヨナラロリポ、こんにちはさくら

記事が500ぐらいの現状、ロリポップのサーバが重くなり、記事の投稿、コメントの書き込みに時間がかかったり、エラーが頻繁に発生していて、いろいろチューニングをして

2010年2月16日

コメント

コメントを残す

芝鳥 のぶあま

この記事を書いた人

芝鳥 のぶあま

世界25か国・932コースをラウンドしたゴルフトラベラー。食事とお酒も大好きな食いしん坊ゴルファー。

プロフィール詳細 →

この前後の記事

← TOPに戻る
楽天トラベル