QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

微信扫一扫 分享朋友圈

已有 9446 人浏览分享

开启左侧

Discuz升级3.5后,能发帖不能回复,显示Duplicate entry错误

[复制链接]
9446 2
  这几天更新网站,程序系统从Discuz3.4升级为3.5,本来是欢天喜地的大好事,想不到由于新版本太新,漏洞的BUG颇多,造成了很多的困扰,现在将一个比较难搞定的问题分享一下,希望对遇到同样问题的朋友有所帮助。
  这个问题就是:discuz升级3.5后,发帖正常,回复直接出错,显示:
Discuz! Database Error
(1062) Duplicate entry '0-XXXX' for key 'PRIMARY'这样的错误信息。
image.png
  于是把SQL直接拿到数据库里面去执行,发现报错:
image.png
  提示是pre_forum_post表有些字段缺少默认值,于是根据提示把字段加上了默认值,加了好几个。
  再运行,提示position字段有问题。
  对比发现,3.4的position字段是: `position` int(8) unsigned NOT NULL AUTO_INCREMENT,
  而升级后3.5的position字段是:`position` int(10) unsigned NOT NULL,成了非自增字段!问题肯定就出在这里了。
  于是,把position字段重新设置成了AUTO_INCREMENT,并把更新后一些新的记录的position值手动设置了一下,保存。
  重新提交数据,成功啦!能够正常回复啦!问题解决啦!
  不过,上面字段属性差异到底是我升级中出现故障造成的,还是官方的代码瑕疵,这个不得而知。

上一篇:怒喷优酷视频文件下载功能,简直就是垃圾中的垃圾!
下一篇:Discuz升级X3.5后要手动清理Redis内存,否则提示门户和论坛关闭

评论 2

玩慈利网手机认证 实名认证 发表于 2023-1-1 23:47:30 | 显示全部楼层
刚才仔细看了官方的表更新语句,没有什么问题,查看站长-数据库-校验,这里面的问题。本来是正确的结构,校验出错了,如果选择修复就完蛋了,在官方更新前,千万别选修复。
image.png

举报 使用道具

回复 支持 反对
玩慈利网手机认证 实名认证 发表于 2023-1-2 01:06:42 | 显示全部楼层
这个我再说明一下,这不是官方BUG,是N年前可能自己修改了post表,造成与官方表结构不一致,从而导致了后面的一系列错误。官方的数据库校验也木有问题。当然,如果你以前也修改过表,出了能发帖不能回帖的问题,可以参考上面的方法解决。不过,强烈建议还是以官方的数据结构为准。我都改过来了。

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

36

关注

177

粉丝

13651

主题
热门资讯
网友晒图
  • 公众号

    微信公众号

  • 微信

    站长微信

Powered by Discuz! 在此致以诚挚谢意!

CopyRight © 2011-2024 wancili.com