使用PHPMyAdmin执行WordPress评论数修正SQL语句遇#1048错误求助
解决WordPress评论计数修正SQL的#1048错误
问题原因
原SQL使用LEFT JOIN后,无通过审核评论的帖子对应的wpc.cnt会返回NULL,而WordPress的wp_posts表中comment_count字段带有非空约束(NOT NULL),直接将NULL赋值给该字段就会触发#1048 - Column 'comment_count' cannot be null错误。
修正后的SQL语句
UPDATE mydomain.1we9ZZc0_posts wpp LEFT JOIN (SELECT comment_post_id AS c_post_id, count(*) AS cnt FROM mydomain.1we9ZZc0_comments WHERE comment_approved = 1 GROUP BY comment_post_id) wpc ON wpp.id=wpc.c_post_id SET wpp.comment_count = COALESCE(wpc.cnt, 0) WHERE wpp.post_type IN ('post', 'page') AND (wpp.comment_count != COALESCE(wpc.cnt, 0));
关键改动说明
- 用
COALESCE(wpc.cnt, 0)处理空值:当wpc.cnt为NULL时自动替换为0,既满足字段非空要求,又正确反映无审核评论的帖子计数。 - 简化WHERE条件:原条件中
(wpp.comment_count!=wpc.cnt OR (wpp.comment_count != 0 AND wpc.cnt IS NULL))可统一用wpp.comment_count != COALESCE(wpc.cnt, 0)替代,逻辑更简洁,覆盖所有计数不匹配的场景(包括原计数不为0但实际无评论的情况)。
额外注意事项
- 执行前务必备份数据库,避免数据意外丢失。
- 如果你的WordPress表前缀不是
1we9ZZc0_,请替换为实际的表前缀。 - 执行后可通过查看帖子评论计数,验证修正效果。
内容的提问来源于stack exchange,提问作者steven minix
相关产品推荐
相关产品推荐

