まいける's Tech Blog

LAMP関係のメモなどを不定期に掲載します

意図したエントリー以外にトラックバックが投げられてしまう問題を解決する

 MTで、トラックバックURLで指定されている記事番号(例:1234)にトラックバックを投げているにもかかわらず、別の記事(例:1235)にトラックバックが登録されてしまう場合、mt_trackback テーブルの trackback_id と trackback_entry_id が整合していない可能性があります。
 こんなことはそうそう起こるものではないのですが、はまりかけたので備忘録として残しておきます。

 この場合、trackback_entry_id が mt_entry テーブルの entry_id と紐づいているので、trackback_id に trackback_entry_id を合わそうとすると、修正箇所が多くて大変です。なので、trackback_entry_id に trackback_id を合わせることにします。この場合の問題点は、trackback_id が PRIMARY KEY になっていることと、auto_increment が付いていること。PRIMARY KEY は重複を許さないので、trackback_id と trackback_entry_id のズレがわずかな場合、単に

UPDATE mt_trackback SET trackback_id = trackback_entry_id;

を実行すると、エラーになります。そこで、

UPDATE mt_trackback SET trackback_id = trackback_entry_id + 20000;
UPDATE mt_trackback SET trackback_id = trackback_entry_id;

のように、いったん重複しない値に変更した上で、本来の値に書き換える必要があります。また、この作業を行っただけだと、auto_increment によって、trackback_id に次に付けられる値は変更されないので、再びずれてしまいます。そこで、

ALTER TABLE mt_trackback AUTO_INCREMENT = 1235;

のように、trackback_entry_id の最大値+1の数字を設定してあげることで、上記の問題を解消する必要があります。

 以上、備忘録でした。

 最後に少し宣伝を。Amazon の書籍・雑誌の詳細ページから楽天ブックスの同じ商品のページに飛ばすブックマークレットや、Amazon の価格よりも安い楽天のショップを探すブックマークレットを公開しています。たまったポイントの利用などで楽天を使いたい人には便利だと思いますので、よろしければご利用ください。
http://tools.trend-antenna.com/