加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Discuz!错误:歉仄,该附件无法读取的办理要领

发布时间:2021-04-01 09:59:48 所属栏目:教程 来源:网络整理
导读:最近进级了x2.0的补丁,发明平凡用户在下载附件的时辰会呈现歉仄,该附件无法读取的提醒,但下载分已经扣了!搞得各人很是不满。但打点员之类的不扣下载分的是可以下载的。 于是开始网上搜刮了,发明也有相同题目,但不是路径差池,就是附件自己有题目。 要

  最近进级了x2.0的补丁,发明平凡用户在下载附件的时辰会呈现‘歉仄,该附件无法读取’的提醒,但下载分已经扣了!搞得各人很是不满。但打点员之类的不扣下载分的是可以下载的。

  于是开始网上搜刮了,发明也有相同题目,但不是路径差池,就是附件自己有题目。 要么就是同样的题目没人解答。 没步伐,只好本身想步伐了。

  先是在 forum_attachment.php 里看了半天,确定谁人提醒是从这里报出的。报这个提醒的环境有许多处,我碰着的是附件不存在, 稀疏? 附件不存在怎么打点员可以下载呢? 于是进一步跟踪数据库,终于发明白题目。 discuz 的附件是分表存放的,表名像这样 pre_forum_attachment_0,pre_forum_attachment_1,我这里共有0~9, 10个表,其它有一个表 pre_forum_attachment,生涯了满是编号,像aid(附件ID),tid(帖子ID),uid(用户ID),tableid(这个就是暗示详细附件信息生涯在哪个表中)。 于是我找出下载失败的附件的id, 搜刮 pre_fourm_attachment,获得tableid, 再从响应的附件表中查找, 发明没有找到, 但在另一个附件表中找到了, 声名这个题目的缘故起因是附件表中的tableid差异步造成的。 这样的话办理要领就清朗了,就是同步tabeid。

  办理要领就是执行几条sql语句,像这样:

update pre_forum_attachment a,pre_forum_attachment_0 b set a.tableid = 0 where a.aid = b.aid;
update pre_forum_attachment a,pre_forum_attachment_1 b set a.tableid = 1 where a.aid = b.aid;
......
update pre_forum_attachment a,pre_forum_attachment_9 b set a.tableid = 9 where a.aid = b.aid;

  要领有点土,执行了许多次相同的语句,留意个中的两个数字要沟通,不然贫困大了。 执行后,题目办理。

  PS: 我的版本是 discuz! x2,安装的时辰表前缀是可以改的,以是你的表前缀也许不是 pre_,以是留意查察现实的表前缀。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读