(WordPress)Popular Post がヘンなのが so ならば、then 困ったちゃん

うーぐぐぐ、む。

mysqladmin で直接データベース叩いててやっぱしおかしい。

一つ前の投稿の最後の追記の「アヤシゲ」な SQL を叩いてみたら、「2行挿入」「1行挿入」言われた。んなわけない、更新のつもりで叩いてんのに。

で、

1 SELECT * 
2 FROM  `wp1_popularpostssummary` 
3 WHERE postid =1262
4 ORDER BY  `wp1_popularpostssummary`.`postid` ASC

は果たして…うわぁ、大量にレコードヒットしてきた。これを意図してるコードには見えなかったが?

これが「ダメじゃん」なら「全然ダメじゃん」なんだけど、ほんとにそう? 結構ユーザ多いプラグインなんじゃないかと思うんだけど、こんな初歩的なミス(ならば)、ちょっとヒドすぎますけど。

これで view がこの「ぢゃんすかいんさーと祭り」に対応できてなかったらアウトだわ。






とりあえずテーブルの構造は:

「${ほにゃらら}」は wordpress コードでの置き換え文字列。脳内変換しとくれ。
 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 も…、あぁうまくいってるようにもみえる。

これが「オカシイ」原因だと思ったのは気のせいかな…。

もうちょい見てみるか…。