MovableTypeの「Can't call method "execute" on an undefined value」というエラーが発生するときはなにかが1000件を超えた時

MTexecute当WEBサイトはMovableType6で運営している。先日「Can't call method "execute" on an undefined value」というエラーが発生して記事の修正や新規追加ができなくなった。この日は3件のブログ記事を書いており、2件までは普通に書けた。3件目の記事を公開した直後にこのエラー表示がでた。記事一覧は見ることができるが、そのうちの一つの記事をクリックして修正しようとするとエラーになる、このエラーの原因と対策を探ってみた。

「Can't call method "execute" on an undefined value」の原因

「Can't call method "execute" on an undefined value」が出たのは初めてではない。以前もサイトマップ生成(sitemap.xml)のテンプレートでこのエラーを起こしている。このときの原因はMovableTypeは構造上の仕様で999件以下しか管理できない部分があり、1000件になった瞬間にエラーになるということだった。

当ブログでは、記事数が3000件を超えており、1000件を超えた分のsitemapを分割している。ここでエラーが起きたのではないかと推定した。早速、このsitemap.xmlのテンプレートの内容を確認し修正した。

<MTEntries offset="3996" lastn="999">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
</url>
</MTEntries>
</urlset>

しかし、今回のエラーはこの部分が原因ではなかった。なんとタグが1000件になっていた。タグが1000件に達したことで「Can't call method "execute" on an undefined value」というエラーになっていたのだった。

タグが1000件になるとエラーになる

このようにタグの一覧は表示することができる。ブログ記事の一覧も表示できる。しかし、ブログ記事の一覧から記事をクリックして開こうとすると「Can't call method "execute" on an undefined value」というエラーが表示され編集できない。

そもそもこのタグは、ほとんどが記事ではなく写真アイテムだった。写真の説明文と同じものをコピペしてタグの部分に貼り付けていたことがあり、そのことが仇になったようだ。

対策としては、タグ一覧から不要なタグを削除することである。999以下であればエラーにならないが、余裕をみてこのさい不要なものは一気に削除して100以下にまで減らした。これ以降、「Can't call method "execute" on an undefined value」というエラーは起きていない。

このエントリーをはてなブックマークに追加 遠田幹雄のLINE@アカウントを友だち追加  



この記事を書いた人

中小企業診断士:遠田幹雄の顔写真遠田 幹雄(とおだ みきお)
 
経営コンサルティング企業の株式会社ドモドモコーポレーション代表取締役。石川県かほく市に本社があり金沢市を中心とした北陸三県を主な活動エリアとする経営コンサルタントです。
小規模事業者や中小企業を対象として、経営戦略立案とその後の実行支援、商品開発、販路拡大、マーケティング、ブランド構築等に係るコンサルティング活動を展開しています。民民での直接契約を中心としていますが、商工三団体などの支援機関が主催するセミナー講師を年間数十回担当したり、支援機関の専門家派遣中小企業基盤整備機構の経営窓口相談に対応したりもしています。
保有資格:中小企業診断士、情報処理技術者
 
会社概要およびプロフィールは株式会社ドモドモコーポレーションの会社案内にて紹介していますので興味ある方はご覧ください。


この記事のURL「https://www.dm2.co.jp/2014/10/cantcallmethod.html」をQRコードで表示
この記事のURL「https://www.dm2.co.jp/2014/10/cantcallmethod.html」をQRコードで表示「https://www.dm2.co.jp/2014/10/cantcallmethod.html」
パソコンで表示されたページをスマホでも見たい場合は、このQRコードをスマホのカメラ(QRコードが読めるリーダー)で読むとページが表示されます。