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

琴弦上的鱼 发布于 2015/10/25 01:07
阅读 351
收藏 0

   有懂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有冲突,请各位不吝赐教!



加载中
0
琴弦上的鱼
琴弦上的鱼
有做过dedecms开发的同学么
0
金三胖
金三胖
好久没玩了
0
mark35
mark35
dede漏洞太多,并且数据量稍大就龟速,现在很少人用了
0
洋芋丝
导入的时候,把表结构改了,导进去了在改回来
0
琴弦上的鱼
琴弦上的鱼

引用来自“洋芋丝”的评论

导入的时候,把表结构改了,导进去了在改回来

因为我用的是PHPExcel,导入时候需要先truncate掉表内容,但是自增ID是从arctiny表获取的,这个表同时又给archives主表和其他addon附加表在用,没法也给truncate掉,所在造成了极大的浪费,我现在也没想到好的解决方法。

0
琴弦上的鱼
琴弦上的鱼

引用来自“mark35”的评论

dede漏洞太多,并且数据量稍大就龟速,现在很少人用了
是的,也就是平时需要建立企业站的时候用的比较多,毕竟模板什么的很方便。加上{dede:php}{/dede:php}标签基本就无敌了
返回顶部
顶部