Discuz! X-DZ的发帖错误问题?

Discuz! X-DZ的发帖错误问题?

夜无邪 发布于 2017-07-06 字数 195 浏览 1014 回复 4

最近老有用户反应发帖会遇到下面这样的错误,不知道什么原因会引起这个主键的重复呢?下面是截图:

请输入图片描述

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

晚风撩人 2017-10-11 4 楼

查看你dx文章表forum_post里的字段pid是否AUTO_INCREMENT自增的,报这个错误你是表里已存在该主键了。一般出现这错误是你再升级系统导数据或采集其他数据的时候修改了该字段的属性。把该字段设置成自增!

虐人心 2017-09-28 3 楼

我建议你赶紧看看此表是否损坏了,id重复出现是可能是你二次开发中的插入不当导致的,造成DZ的协调表 出现异常,以前我们论坛也出现过这种情况,你把你的二次开发的程序好好检测一下,看有无插入关联的表出现插入失败,抓取一下异常,修复程序后主要是你把这个出现问题的表赶紧修复一下...

甜柠檬 2017-09-18 2 楼

我觉的这个和这个表有关系:pre_forum_post_tableid 分表协调表的记录估计除了问题,因为我刚才跟踪到dz的function中的此方法有一些协议:

function insertpost($data) {
if(isset($data['tid'])) {
$tableid = DB::result_first("SELECT posttableid FROM ".DB::table('forum_thread')." WHERE tid='{$data['tid']}'");
} else {
$tableid = $data['tid'] = 0;
}
$pid = DB::insert('forum_post_tableid', array('pid' => null), true);

if(!$tableid) {
$tablename = 'forum_post';
} else {
$tablename = "forum_post_$tableid";
}

$data = array_merge($data, array('pid' => $pid));

DB::insert($tablename, $data);
if($pid % 1024 == 0) {
DB::delete('forum_post_tableid', "pid<$pid");
}
save_syscache('max_post_id', $pid);
return $pid;
}

这个方法返回的就是你重复的那个发帖id,你可以自己详细检测一下

灵芸 2017-09-12 1 楼

可能是你对程序或数据库作了修改,给你下官方的解决办法,Duplicate entry '%s' for key %d