- Discuz论坛搬家,重装,只备份了论坛里的数据,忘记备份ucenter会员数据。ucenter会员数据丢失!
- 用户反应无法登录论坛了,用户名和密码都正确,一查用户资料页也可以访问,而UCenter里却没有该用户信息。ucenter会员数据丢失!
这里提供一条我用过的非常简单的方法,只需进入数据库管理,执行以下语句即可。
温馨提示:数据库操作有风险,建议您提前备份好用户数据。
- insert into pre_ucenter_members
- (uid,username,password,email,myid,myidkey,regip,regdate,lastloginip,lastlogintime,salt)
- select uid,username,md5(concat(md5('123456'),'123456')),email,'0','0','0.0.0',regdate,'123','123456','123456'
- from pre_common_member where uid not in (select uid from pre_ucenter_members );
语句解释:
- insert into pre_ucenter_memberfields (uid,blacklist)
- select uid,'' from pre_common_member where uid not in (select uid from pre_ucenter_memberfields);
语句的作用就是把DZ论坛有记录,而UC不存在账户的这部分的用户信息导入到UC,由于密码只有UC里有,DZ没有,所以导入的同时,将这部分用户的密码自动重置为123456,那么以后再遇到反映问题的用户,提示他们用新密码登录就可以了。
另一种情况,如果发现DZ和UC用户数据不同步的问题,距离出现问题的时间已经很久了。可能有部分用户发现无法登陆时,用自己原来的 用户名,重新注册了(由于UC没有这部分用户的资料,所以即使DZ有,注册时,也不会显示 用户名已被占用 的提示)。那么直接执行上面的语句,可能会造成部分用户名重叠,导致这部分用户登陆异常。不用着急,稍微修改一下上面的语句即可:
insert into pre_ucenter_members
(uid,username,password,email,myid,myidkey,regip,regdate,lastloginip,lastlogintime,salt)
select uid,username,md5(concat(md5('123456'),'123456')),email,'0','0','0.0.0',regdate,'123','123456','123456'
from pre_common_member where uid not in (select uid from pre_ucenter_members ) and username not in (select
username from pre_ucenter_members );
第二句和上面一样。
以上语句二选一,以上语句二选一,以上语句二选一!
操作完后,如果出现管理员,创始人密码不对,丢失情况,请使用Discuz! tools工具箱,找回管理员创始人密码!
最后,提醒大家进行论坛升级,操作数据库等操作前,使用批量操作用户数据的插件时,一定要提前备份自己的DZ和UC数据,操作完成后,马上检查用户数据是否有异常,建立一个QQ群,确保用户有问题,能马上联系技术人员。养成好习惯,出现再多的问题,也不怕。
以上方法同样适用于论坛搬家、升级后,没有备份UCENTER里面的数据而导致的Discuz论坛有会员数据,UC里面没有的情况。
此方法飞牛在DiscuzX3.4中测试成功,其他版本只要数据表结构没变化,同理应当适用。
评论 (0)