Discuz升级3.5后,能发帖不能回复,显示Duplicate entry错误
这几天更新网站,程序系统从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值手动设置了一下,保存。
重新提交数据,成功啦!能够正常回复啦!问题解决啦!
不过,上面字段属性差异到底是我升级中出现故障造成的,还是官方的代码瑕疵,这个不得而知。
这个问题就是: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值手动设置了一下,保存。
重新提交数据,成功啦!能够正常回复啦!问题解决啦!
不过,上面字段属性差异到底是我升级中出现故障造成的,还是官方的代码瑕疵,这个不得而知。