找回密码
 注册
搜索
热搜: 嘉康利
查看: 174|回复: 4

用户积分不能更新的一类情况及处理办法

[复制链接]
发表于 2019-9-19 14:07:25 | 显示全部楼层 |阅读模式
本主题是一个经验分享
一、问题简述:
早期注册用户一枚,由于长期未使用,被系统纳入存档表,后来用户回归,能正常登录论坛,但发现无论是自己发帖、他人评分、后台加分都不能更新积分,所有统计数据不是显示为“0”就是显示为空或“-”……查询Discuz社区也未得到相关问题的解决办法,只能自己瞎子摸象慢慢排查……
二、问题排查:
本站系统正常,8万6千会员中就这一例出现问题,以前即使是已在存档表中的会员,只要再次登录,即可激活恢复正常功能,因此,没有啥头绪,但问题可以肯定是出在用户存档表数据上,由于DZ后台的用户分表并未提供可逆的操作途径,靠手工合并或还原数据库将是件很危险的事情,于是我便考虑对数据库中有关这个会员的单一记录先行分析一下,这时发现,这个会员同时在主表和存档表中都有记录,复查其它存档表用户,以及有激活历史的用户,并未发现有两表重复记录的情况,于是该用户重复记录显然就是造成积分不能更新的重大嫌疑,后台查寻后发现只有这个用户在存档表和主表中都能查到,并且两表的查寻结果完全一致并且同步(比方说更改主表的用户组,存档表中也会同步改变),这就说明系统的判断出现问题,其实这个用户已经被激活在主表中了。存档表中的记录只是一个镜像,但就是因有这个镜像,系统判定这个用户依然是存档的非激活用户…………
三、问题处理:
有了结果,处理起来却仍然没方向,只能死马当活马医,首先想到的就是删除存档表中的这个镜像,便去后台查寻存档表后执行用户删除(留了一手,仅删除用户,未勾选删除该用户的其它数据及UC数据),结果,意料中的悲剧产生了,主表中该用户的查寻也消失了,论坛中该用户的所有帖子也都不见了,这下彻底不用纠结了,看来只能重新建一个用户并准备向该会员道歉了……
四、意外结局:
先试试在后台用同样的用户名新建用户,预计会被拒绝,因为UC中该用户并未被删除,结果果然是这样,但是弹出的提示中却有另一句话让我眼睛一亮:“该用户名已存在,并处于非激活状态,需要立即激活该会员吗?”,为这句话,这几天我已是找遍整个后台了,却没想到居然隐藏在这么个死地里,真可谓置之死地而后生了,立马点击确认,系统弹出“新用户已创建成功”………………?"新用户”???,难道并不是“激活”么?,赶紧查寻——欣喜在这一个来临:一个完整地继承了原同名ID/UID的“新用户”重生了,用户资料、用户帖子全部都在,虽然统计数据全部归“0”,但数据更新已恢复正常。

后语:这只是一个非常规处置案例,偶尔撞见,原理讲不明白,仅供有类似情况的朋友参考,精简步骤如下:
1、查寻主表和存档表,若发现两表均有该用户记录,继续……
2、删除存档表中的用户,注意保留UC及全部用户数据(估计随便删除哪个表中的记录结果都一样,没试),查看用户资料,若已显示无该用户,继续……
3、后台添加新用户,需与已删除的同名,应能弹出“激活”有关的提示窗,确认,继续……
4、检查用户恢复情况,该用户下的所有帖子、资料都应该恢复如初,积分更新恢复正常……完成。
发表于 2019-9-19 15:25:02 来自手机 | 显示全部楼层
难到我就是那个论坛里唯一的幸运用户吗?哈哈哈哈
回复 1 0

使用道具 举报

 楼主| 发表于 2019-9-19 15:14:53 | 显示全部楼层
1.进pre_forum_post1表,操作,将表复制到(数据库名.表名),选 结构和数据 ,表名填pre_forum_post_1bak
2.执行 insert pre_forum_post SELECT * FROM pre_forum_post_1
3.执行 delete from pre_forum_post_1


2 是把分表数据导回主表,3 是清空分表数据,1是为了万一,把分表做个备份

  1. insert pre_forum_post SELECT * FROM pre_forum_post_1 where pid not in (select pid from pre_forum_post )
复制代码

回复

使用道具 举报

发表于 2019-9-24 15:14:10 | 显示全部楼层
nb,大非竟然还在搞技术
回复

使用道具 举报

发表于 2019-9-26 09:22:38 | 显示全部楼层
摊主辛苦了,加个鸡蛋
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|AIGANYU.COM

GMT+8, 2024-11-28 03:36 , Processed in 0.075945 second(s), 18 queries .

Powered by Discuz! AiGanYu

© 2001-2024 Discuz! Team

快速回复 返回顶部 返回列表