前几天由于自己的操作失误,将论坛板块给删除了,Discuz!后台版块被删除后是无法恢复的,如下图:
板块删除
想了一下,我用的是阿里云ESC服务器,应该有快照保存的,本人没有每天备份的习惯,打开阿里云后台看见我在5月1日居然保存了快照,但又不能直接恢复到5月1日,到今天可就差3天时间啊,不能全部快照回滚,所以就开始数据恢复旅程!如下图:
阿里云快照
第一:必须先保存现在当前时间的数据,有用户量的话最好在晚上11后开始操作,避免用户数据丢失!
接下来,就是操作了,要找到被删除版块数据,操作---》快照回滚到5月1日-》进入论坛--》后台--》删除所有数据(不包括被误删除数据),也是就说留下“被误删除的数据版块”。
删除干净后,进入数据库管理后台,我用的是phpmyadmin,找到2张表是“pre_forum_post帖子表”和“pre_forum_thread主题表”,如下图:
数据表
将其数据内容全部导出保存下来,以sql后缀名保存到本地。我是直接导出sql语句保存,当然保存方法有很多,我就不一一说明了,如下图:
直接导出sql语句
别以为这就是结束了,这才刚刚开始呢,找到了“pre_forum_post帖子表”和“pre_forum_thread主题表”,当然还有图片和附件数据表呢,如下图,一张“附件关联表”和“10张附件图片信息表”。
附件表
将其内容如同上面一样,全部保存成sql数据。
接下来,“pre_forum_post帖子表”和“pre_forum_thread主题表”,图片附件数据表都有了,还缺呢?对了,还缺图片、附件文件没有保存(ps:mysql只是保存附件图片路径地址),图片附件文件藏在:bbs\data\attachment\forum,所以带日期文件夹里面。
附件文件夹
接下来,快照回滚到最新时间数据,在论坛上新建一个版块,版块名称就叫“我被误删除”,并记录下fid如下图:
板块fid
打开“pre_forum_post帖子表”和“pre_forum_thread主题表”,修改其字段fid值,对应如上图fid,批量修改字段fid,sql语句是:
1 |
update 表名 set 字段名=新值; |
fid字段
准备工作已经全部完成了,下面开始导入数据,在论坛后台执行sql语句,如下图:
部分sql语句
插入数据时,如有出现“sql报错主键已存在”,那有可能是一开始删除数据不干净,导出数据重复,因为现在导入的数据是“被误删的数据”。
最后将图片和附件上传到服务器中,打开帖子会发现图片附件还是不显示,只要点一下“编辑”就显示了!具体原因为什么,可能是php是需要浏览器刷新后才能执行语言吧!
版块数据就这样恢复了!