dvbbs转discuz过程中遇到不能建立索引的解决办法

最近一直忙碌这社区的改版,关键问题是dvbbs数据库向discuz转移,由于不知道dvbbs的版本,discuz nt 3.1版的转移程序也没出来,所以自己上手对数据库做了手工转移,过程中涉及到很多问题,有空会慢慢写出来。

一、数据转移过程中遇到不能建立索引的问题

dvbbs转discuz nt 3.1过程中一旦遇到这个问题,提示某个ID有重复值““create unique index终止,因为发现了索引ID5的重复键...”,首先考虑到是某个列有重复值,但是不能说一定是主键、请检查建立索引里的所有列是否有重复的值。然后对重复值进行相应的处理,提供几个sql语句。

下面这段可以删除重复语句到零时表

代码
   
     
由于WA_GZBItemTitle表手工删除不了重复的记录,所以只有先将该表唯一记录导出到临时表tmp_WA_GZBItemTitle中,执行语句为: select distinct * into tmp_WA_GZBItemTitle from WA_GZBItemTitle ;然后用delete from WA_GZBItemTitle语句将WA_GZBItemTitle表清空,之后执行 insert into WA_GZBItemTitle select * from tmp_WA_GZBI
下面这段进行有主键插入,比如你想保留原有主键值的情况下

代码
   
     
set IDENTITY_INSERT TF_topics ON
insert into TF_topics(tid,fid,iconid,typeid,readperm,price,poster,posterid,title,attention,postdatetime,lastpost,lastpostid,lastposter,lastposterid,views,replies,displayorder,highlight,digest,rate,hide,attachment,moderated,closed,magic,identify,special) select * from tmp_TF_topics;

 

当然如果表结构本来有错误,在零时表获取数据之后可以删除实表,然后重新创建实表

你可能感兴趣的:(discuz)