Movable Type: 2005年10月アーカイブ
先日、Trackback Albirexをゆっくり眺めていて、急に気づいた。
表示されるべきトラックバックデータのうち数十件が表示されていない!
正確に言うと、「全トラックバックリスト」ではきちんと全件が表示されるのだが、「試合別リスト」で見ると、過去のいくつかの試合でトラックバックが「0」と表示されてしまう。インデックスの異常か何かで、エントリーごとにトラックバックを拾ってくる際に拾えなくなっているような感じ・・・。
困った。
MySQLならプロバイダで用意してあるGUI(phpMyAdmin)で即データをいじれるんだけど、こないだアップデートしたときにデータベースをSQLiteに変換しちゃったばかりだし。
いろいろ考えたあげく、しょうがない、一から勉強ですよ。
SQLite入門 すぐに使える軽快・軽量データベース・エンジン | |
西沢 直木 翔泳社 2005-09-09 売り上げランキング : 21,075 おすすめ平均 Amazonで詳しく見る by G-Tools |
とりあえずこの本を読んでSQLiteのコマンドをざっと勉強して、付録のCD-ROMに入ってるSQLite Control CenterというツールをPCにインストールして、データベースをローカルで修正してアップロード。ああ、なんという力業。
昨日、recently_commented_onが正常に作動しない(各エントリーの最新のコメントではなく、最初についたコメントの時刻順にソートされてしまう)ことについてエントリーを書いた(「アップグレードしたのはよいが・・・」)。具体的にどのようになるかというと
3.2-ja-2をそのまま適用 | ContextHandlers.pmを書き換え |
ちょっと見づらいかもしれないけど、「「良い一週間」でありますように☆」と「Upgrade!」が逆に表示されているのが分かると思う。
この件について、同じような症状が現れたという47thさんからさっそくコメントをいただいた。ということは・・・この問題は私に固有の問題ではなくて、もしかしてLolipop+SQLiteの場合に現れる症状なのかな?
なにぶんまだ情報が少ないので、可能性の一つとして、ということだけど。
ちなみに私もLolipopのレンタルサーバーを使ってるわけだけど、mt-check.cgiを実行すると
サーバーに、「DBD::Pg」がインストールされていない、古いバージョンがインストールされている、もしくは「DBD::Pg」に必要なモジュールがインストールされていません 「DBI」と「DBD::Pg」は、PostgreSQLを使ってデータを管理するために必要です。「DBD::Pg」をインストールする場合は、インストール手順を参照してください。
と表示される。PostgreSQLは使わないので、私の場合は関係ないはず、と思ってスルーしてるけど、なにかこのへんも関係あるのでしょうか・・・???
Movable Typeを「3.2日本語版 Release-2」にアップグレードした。
事前にデータベースをSQLiteにしておいたこともあり、アップグレード自体は非常にスムーズに行った。
ダウンロードしてきた「3.2日本語版 Release-2」を解凍後、mt-config.cgiの変更。さらに自分で手を加えていたCMS.pmとTrackback.pmに、必要な変更を行った。そして、説明の手順通りにサーバーにアップロードして、パーミッションの変更後にmt.cgiを実行する。すると、新しくなった管理画面が現れた!
最後に、全体を再構築してアップデート完了。
一応すべてバックアップを取っておいたとはいえ、再構築が終わるまではちょっとドキドキした。
再構築にかかる時間は多少短くなったように感じたが、計ったわけではないので、気のせいかも(笑)
で、ここまではよかったのだが。
しかーし!
「最近のコメント」の動向がおかしい!
新しくコメントがついた記事が上に表示されるようにしてあるのに、ソートされてこないのだ。
あれこれテスト投稿して動向を調べたところ、どうも「最後のコメント」の投稿時刻順ではなくて、そのエントリーについた「最初のコメント」の投稿時刻順でソートされているようだ。
今回のアップデートでは「recently_commented_onの処理を見直し、パフォーマンスが低下していた現象を修正」とあるので、この処理になんらかの手が加えられたことは間違いないのだが、私と同じような症状が出ている人はいないようで、ネットをあさっても情報が見つからない。
泣く泣く自力で解決策を探すことにした。
一念発起。
Movable Typeを最新バージョンにアップしたよ。
うまく行くでしょうか。
テスト投稿です。
どきどき。
スパム対策に利用していた「MT-Blacklist/Comment Spam Clearinghouse」。コメントもトラックバックもチェックしてくれるし、チェック用のブラックリストも自動更新される。これを導入してからスパムで困ることが全然なかったので、もう更新しないというインフォメーションをみてかなり焦った。
というのも、データベースをBerkeley DBからSQLiteに変更する際にconfigファイルを書き換えたので、MT-Blacklistも再設定が必要に。設定が全部初期化された後に最新のブラックリストが自動取得される・・・と思いきや、いつまでたってもアップデートしない。ログを見てみると、
Unable to fetch remote blacklist from http://xxxxxxx/xxxx/xxxx/blacklist.txt
で、ブラックファイルのリストblacklist.txtが真っ白になっているのだったorz
データベースを変更したのが10月8日。MT-Blacklistの配布停止が10月5日。時差を考えればほんのタッチの差で、Master Blacklistが入手できなくなってしまったわけだ。
それからよくよくアナウンスメントを読んで、アップデートしなくなってしまったのは、スパム対策が強化されたMT ver3.2が登場したからだと思っていた。
ところがどっこい。
それも一つのきっかけになってはいるのだが、もっと複雑な事情があったのであるよ。
実はMovable Type 3.2へのupgradeを虎視眈々と狙っていたのだけれどw、まだいろいろ不具合があるようだ。
Berkeley DBの環境下でMovable Type 3.2日本語版をご利用のお客様へのお知らせ
去る9月29日より出荷を開始しました、「Movable Type 3.2日本語版」について、Berkeley DBをご利用のお客様で、以下の現象を確認いたしましたので、ご案内いたします。
私もBerkeley DBを利用してるので、ここは少し待つべきかな?
とは思ったのだが、せっかくの機会だし、とりあえずはupgrade前にデータベースをSQLiteに変更することにした。
データベースとして本当はMySQLを使いたいところだし、事実一度はMySQL化したのであるけど、LolipopのSQLサーバーが貧弱なせいか、しばしば構築エラーやトラックバックの遅延が起こったので、結局Berkeley DBに戻した経緯がある。廉価で使ってるサーバーだからしょうがないと言えばしょうがないんだけどね・・・。
SQLiteに変換するのに使ったのは、Movable Typeに標準でインストールされてるmt-db2sql.cgiではなくて、Ogawa::Memorandaさんのmt-db-convert.cgi。mt.cfgを書き換えなくても指定したパスにDBを書き出せるので、失敗がなくて安心かな、と。しかも、逆方向へのコンバートも容易らしいし。
使い方は、解凍してサーバーにアップロードして、コンバート先のDBの種類とコンバート先を指定してやるだけ。あっという間の作業でした。
エラーなしにコンバートできたら、mt.cfgのデータソースの部分を書き換えてやれば桶。これまでのBerkeley DBへのパスを「#」を付けてコメントアウトしてやり、「ObjectDriver」を「DBI::sqlite」にしてパスを書き換えて有効にしてやればよし。
エラーなしに動いてくれてるようだす。