うーぐぐぐ、む。
mysqladmin で直接データベース叩いててやっぱしおかしい。
一つ前の投稿の最後の追記の「アヤシゲ」な SQL を叩いてみたら、「2行挿入」「1行挿入」言われた。んなわけない、更新のつもりで叩いてんのに。
で、
1 SELECT *
2 FROM `wp1_popularpostssummary`
3 WHERE postid =1262
4 ORDER BY `wp1_popularpostssummary`.`postid` ASC
は果たして…うわぁ、大量にレコードヒットしてきた。これを意図してるコードには見えなかったが?
これが「ダメじゃん」なら「全然ダメじゃん」なんだけど、ほんとにそう? 結構ユーザ多いプラグインなんじゃないかと思うんだけど、こんな初歩的なミス(ならば)、ちょっとヒドすぎますけど。
これで view がこの「ぢゃんすかいんさーと祭り」に対応できてなかったらアウトだわ。
とりあえずテーブルの構造は:
1 CREATE TABLE {$prefix}data (
2 postid bigint(20) NOT NULL,
3 day datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
4 last_viewed datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
5 pageviews bigint(20) DEFAULT 1,
6 PRIMARY KEY (postid)
7 ) {$charset_collate} ENGINE=INNODB;
8 CREATE TABLE {$prefix}summary (
9 ID bigint(20) NOT NULL AUTO_INCREMENT,
10 postid bigint(20) NOT NULL,
11 pageviews bigint(20) NOT NULL DEFAULT 1,
12 view_date date NOT NULL DEFAULT '0000-00-00',
13 last_viewed datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
14 PRIMARY KEY (ID),
15 UNIQUE KEY ID_date (postid,view_date),
16 KEY postid (postid),
17 KEY view_date (view_date),
18 KEY last_viewed (last_viewed)
19 ) {$charset_collate} ENGINE=INNODB;
てことなんで、_popularpostsdata の方は少なくとも postid で一意だ、と思い込んでるようだし、_popularpostssummary のほうは (postid, view_date) で一意だ、と考えてることがわかる。
_popularpostsdata の方は意図どおりいってるのかな? _popularpostssummary も…、あぁうまくいってるようにもみえる。
これが「オカシイ」原因だと思ったのは気のせいかな…。
もうちょい見てみるか…。