昨天,一不小心的失误,导致了很多帖子的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里面不存在了,但他的帖子并未删除,那么这些帖子是恢复不了的。当然,这无伤大雅。
教训:无论如何,操作数据库要先备份,哪怕搞定了以后再删除。
1. 资源都是经过站长或作者收集测试修改后发布分享。如若转载请在文内以超链形式注明狐狸库文章出处,谢谢合作!
2. 本站除原创内容,其余所有内容均收集自互联网,仅限用于学习和研究目的,本站不对其内容的合法性承担任何责任。如有版权内容,请通知我们或作者删除,其版权均归原作者所有,本站虽力求保存原有版权信息,但因众多资源经多次转载,已无法确定其真实来源,或已将原有信息丢失,所以敬请原作者谅解!
3. 本站用户所发布的一切资源内容不代表本站立场,并不代表本站赞同其观点和对其真实性负责,若您对本站所载资源作品版权归属存有异议,请留言附说明联系邮箱,我们将在第一时间予以处理 ,同时向您表示歉意!为尊重作者版权,请购买原版作品,支持您喜欢的作者,谢谢!
4. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客如有发现请立即向站长举报;本站资源文件大多存储在云盘,如发现链接或图片失效,请联系作者或站长及时更新。
请登录后查看评论内容