Discuz 提示"该用户已被删除"的解决办法

Discuz 提示"该用户已被删除"的解决办法,第1张

概述昨天,一不小心的失误,导致了很多帖子的authorid变动,使得变动后的帖子显示“xx 该用户已被删除”的提示。 原因是把x替换成xxxx导致的,于是立即把xxxx替换回x,结果依然只解决了部分帖子,郁闷。 于是查原因。 原来,那些异常的帖子的cdb_posts.authorid和cdb_threads.authorid都变成… 昨天,一不小心的失误,导致了很多帖子的authorID变动,使得变动后的帖子显示“xx 该用户已被删除”的提示。

原因是把x替换成xxxx导致的,于是立即把xxxx替换回x,结果依然只解决了部分帖子,郁闷。

于是查原因。
原来,那些异常的帖子的cdb_posts.authorID和cdb_threads.authorID都变成了16777215,可能是我几经替换后,该项值达到了最大值,所以都变成了这个。
那至少好办些了,凡是authorID为166777215的帖子和主题都是不正常帖子。

突然想到小小宇的QQ农场用户迁移的方法,结果尝试下来,不行。
他的MysqL和PHP的语句都是错误的。

看来只有整理思路,另寻他法了。

===============================================

思路:列出所有authorID为16777215的帖子和主题,用与cdb_posts.author相同的cdb_members.username对应的cdb_members.uID替换cdb_posts.authorID和cdb_threads.authorID

历经千辛万苦,还用了join的MysqL语句,终于学会了如何处理。

首先,要验证自己的语句是否正确,那么用SELECT检验一下:SELECT cdb_members.uID,cdb_members.username,cdb_posts.tID,cdb_posts.pID,cdb_posts.author,cdb_posts.authorID FROM (cdb_members,cdb_posts) WHERE cdb_posts.authorID=16777215 and cdb_posts.author=cdb_members.username and cdb_posts.tID=242950
解说:从cdb_members和cdb_posts列出cdb_members.uID,cdb_posts.authorID ,并且满足cdb_posts.authorID=16777215的条件,且cdb_posts.author=cdb_members.username一一对应(相同)。为了以防万一并减少查询时间,加上cdb_posts.tID=242950这个条件。

看了下结果,是对的,且用户名一一对应(uID与authorID不对应)。

然后又费尽心思,终于找到了如何更改authorID=uID的方法。

单独修复某一个会员的帖子的方法://单独的恢复方式 作者和作者ID要填对 如下例子

UPDATE cdb_posts set authorID=61620 WHERE authorID=16777215 and author='purlada'
解说:把cdb_posts中authorID为16777215且作者是purlada的帖子的authorID替换成61620(purlada的uID)

批量修复所有显示“该用户已被删除”的帖子的方法://批量恢复方式 自动查询cdb_members表中的uID匹配到cdb_posts表中的authorID上,前提是db_posts.author=cdb_members.username就是说用户名必须相同,以免错匹配。去掉最后的and是不限主题,也就是全部恢复。

update cdb_posts,cdb_members set cdb_posts.authorID=cdb_members.uID WHERE cdb_posts.authorID=16777215 and cdb_posts.author=cdb_members.username and cdb_posts.tID=242950

update cdb_threads,cdb_members set cdb_threads.authorID=cdb_members.uID WHERE cdb_threads.authorID=16777215 and cdb_threads.author=cdb_members.username and cdb_threads.tID=242950
解说:关键在cdb_posts.author=cdb_members.username这里,这是为了保证两者对应的情况下用uID替换authorID

终于,恢复了。
但是还有一个问题,就是:如果一些用户被删除了,也就是说某些用户在cdb_members里面不存在了,但他的帖子并未删除,那么这些帖子是恢复不了的。当然,这无伤大雅。

教训:无论如何, *** 作数据库要先备份,哪怕搞定了以后再删除。 总结

以上是内存溢出为你收集整理的Discuz 提示"该用户已被删除"的解决办法全部内容,希望文章能够帮你解决Discuz 提示"该用户已被删除"的解决办法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/1001463.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存