去评论
dz插件网

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

左右不逢缘
2023/03/06 16:54:29
  这几天更新网站,程序系统从Discuz3.4升级为3.5,本来是欢天喜地的大好事,想不到由于新版本太新,漏洞的BUG颇多,造成了很多的困扰,现在将一个比较难搞定的问题分享一下,希望对遇到同样问题的朋友有所帮助。
  这个问题就是:discuz升级3.5后,发帖正常,回复直接出错,显示:
Discuz! Database Error
(1062) Duplicate entry '0-XXXX' for key 'PRIMARY'这样的错误信息。

  于是把SQL直接拿到数据库里面去执行,发现报错:

  提示是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值手动设置了一下,保存。
  重新提交数据,成功啦!能够正常回复啦!问题解决啦!
  不过,上面字段属性差异到底是我升级中出现故障造成的,还是官方的代码瑕疵,这个不得而知。