「MySQL移行で表面化したバグ」(MT導入と改造) | ◇ ◀ ▲ ▶ |
データベースをMySQLに移行して以来、サイドバーにある“Recent Updates”が正しく表示されていなかった。
Wiki部分の改良によって正しく表示されていなかったエントリーの一部を修正した。 そういうエントリーは昔に書いたものであっても“Recent Updates”のリストのトップにきてもらわなくては困る。 ところがある程度以前のものはリストにでてこない。
Template\Context.pmのコードを追ったり、 デバッグ出力をだしたりして試行錯誤してみた結果、 どうやらこういうことらしい。
現在“Recent Updates”はlastn=20で上位20エントリーに制限してあるので、 20エントリー以前のエントリーは、そもそもsort_byで指定したソートの 対象になっていなかったというのが、事の真相のようである。
最初は、以前のperlのリスト処理だと全エントリーがソートの対象になるが、 データベース移行後はMySQL固有部分のコードがSELECT文発行の段階で LIMITとかをかけているのかとかデータベースがらみだろう と思っていたが、そうではなかったらしい。
とりあえずcreated_onでソートしたリストを作成している部分を、 ちゃんとsort_byの内容にしたがってソートするようにして問題は解決。
今回オブジェクトストアの部分をみていて分かったのだが、 MT2.6のコードはあまりデータベースを意識した作りにはなってないなぁ。 単純にデータの保存以外にはDBMSを使っていないので、 データへのアクセス速度の面以外ではあまりDBMSを有効活用していない感じ。
「MySQL移行で表面化したバグ」へのコメント コメントを書く
「MySQL移行で表面化したバグ」へのトラックバック