用户注销三个月,积分排行榜第 9 名还是他的昵称和 6800 分,点进去是空白页。日志里能对上时间点,这种反而好排。

注销流程只删了用户主表记录,积分流水和排行榜缓存都没跟着清。统计表里还留着用户 ID 和昵称。这一点先确认清楚,后面就不用反复试。

SELECT COUNT(*) FROM wp_points_total t
LEFT JOIN wp_users u ON u.ID = t.user_id
WHERE u.ID IS NULL;

「注销积分残留」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

处理上按这个顺序:注销钩子里清理积分流水,或者改成匿名化保留;排行榜缓存按用户删除,下一次重建;统计表加外键或定期核对孤儿记录;注销一个测试账号后查排行榜和积分表。

结果对不对很好判断,注销账号从排行榜消失,积分表里没有对应的孤儿记录。

作者 9823189