« メンテナンス : MovableType4へ移行 | メイン | 「#」←これはシャープではありません »

MovableType4 ブログ記事の一覧(offset=20)が表示されず... (;_;)

MovableType4に移行後、過去の記事を編集しようと一覧表示をしようとすると、
 「ブログ記事が見つかりません。」
とのエラーが...。たま~に投稿しようとするとこういう事って多いですよね。
...って、自分でMT入れてるから、そのうち何とかしないといけないですけど(;_;)

という事で、更新サボっている言い訳でした。
転んでもただでは起きずにネタにしてしまう関西人の魂です!!(すみません、関東人です)

200708_MT4_no blog articles found.jpg

◆分っている事
・旧バージョン(3.30)だとOK
・表示オプションで 20件⇒100件指定に変更すると100件表示される。⇒DBの問題ではない。
・クエリを offset=0 に手動で変更するとOK。⇒SQL間違ってる?
・エラーログの一覧でも同じ症状。⇒共通ライブラリのような根の深い部分?
・問題ないブログもあるらしい。⇒環境依存?
◆結論
俺が悪いんじゃねー。 MySQLのバージョンが古うございましたのが原因と判明してございます。私が悪うございました<m(_ , _)m>

どこかで解決してくれるかも?という期待で(^^;)藁に縋り、同じ症状が報告されているサイトにリンクさせて頂きました。
データベースの不調? - Success,success
MovableType4(ムーバブルタイプ4)でCSSが表示されちゃう件。 - ブログ記事の一覧ができないのは未解決。


解決!なの?
ということで、しょうがないのでPerlのソースを読んでみましたです、、、。
結論から申し上げますと、 lib/MT/ObjectDriver/SQL.pm の263行目がMySQLに対応していない形式っぽいのです。
MySQL限定の突貫工事ですが、以下の変更でオフセット表示もうまくいきました。

##    return sprintf "LIMIT %d%s\n", $n,
##           ($o ? " OFFSET " . int($o) : "");
    return sprintf "LIMIT %s%d\n",
          ($o ? "" . int($o) . ", " : ""), $n;

解説:データベースの40番目(offset)から20件(limit)を指定でselectする場合、
  select * from dbabc limit 20 offset 40;
というSQLが発行されるみたいです。PostgresSQLなどではOKですが、MySQLだと
  select * from dbabc limit 40, 20;
なのれす。多分。もっとマトモな解決策がありましたら、itsに愛の手をお願いします。

△△使用前 ▽使用後
200708_MT4_blog articles found.jpg


再度追記。
ごめんなさい、先ほど投稿したSQL構文の件ですが、MySQL 4.0 以降 だとPostgreSQLのそれと互換性があるようです。※MovebleType4の動作環境は、MySQL4.0以降♪
ここのレンタル共有サーバのMySQLはver3.2みたい...絶望的(はぁと)

トラックバック

この一覧は、次のエントリーを参照しています: MovableType4 ブログ記事の一覧(offset=20)が表示されず... (;_;):

» MovableType4でブログ記事一覧が表示されない問題 送信元 almostblue.org
MovableType4でブログ記事一覧を表示中に、次ページをクリックすると「ブ... [詳しくはこちら]