6
回答
关于DEDECMS5.7中GetIndexKey自增ID太大的问题

   有懂dedecms二次开发的同学进,现在通过PHPExcel在dede后台进行数据导入,每次导入的数据基本在3-5w条左右,导入对象为自定义模型,因为dede的自定义模型中aid(自增ID)是强制字段,所以在每次导入的时候都要通过GetIndexKey函数获取自增ID,函数体如下:


function GetIndexKey($arcrank, $typeid, $sortrank=0, $channelid=1, $senddate=0, $mid=1)
    {
        global $dsql,$senddate,$typeid2;
        if(empty($typeid2)) $typeid2 = 0;
        if(empty($senddate)) $senddate = time();
        if(empty($sortrank)) $sortrank = $senddate;
        $iquery = "
          INSERT INTO `#@__arctiny` (`arcrank`,`typeid`,`typeid2`,`channel`,`senddate`, `sortrank`, `mid`)
          VALUES ('$arcrank','$typeid','$typeid2' , '$channelid','$senddate', '$sortrank', '$mid') ";
        $dsql->ExecuteNoneQuery($iquery);
        $aid = $dsql->GetLastID();
        return $aid;
    }
导入逻辑都正常,但是有个问题是,每次重新导入时,需要把原表数据truncate掉,但是#@__arctiny这张表的aid是无法truncate的,所以自增的aid就会变得很大,来回导入几次,aid的编号就办成几十万开始了,请各位能否从程序或者mysql数据库角度来解决下这个问题?目前想法是能否修复arctiny微表的aid起始自增值,但是好像修正后就会和其他表的aid有冲突,请各位不吝赐教!



举报
顶部