[原创]ECMS4.6与DZ5.5的整合(解决了导入ECMS用户的问题)
前言: 花了大概1天的时间,将Ecsm4.6和Discuz5.5整合完毕 本文只是供MYSQL的菜鸟观看!因为我是菜鸟。 版权归中国湿地网|http://www.wetlands.cn所有,欢迎转载:)
背景:
其实一周前我就已经开始着手打算整合论坛和我的Ecms了。
详细按照下载的整合插件包中提供的方法,很快就整合成功,可是整合后我发现存在一个很严重的问题:那就是我的ecms原来的200多用户无法登陆了,若想整合discuz将放弃我原来ecms的用户数据。我现在网站(中国湿地网 http://www.wetlands.cn)的信息更新很大一部分来自于这些忠实用户的投稿,因此我无法接受让这200多用户重新注册。既然两个系统能够整合,说明这两个系统的关键字段是通用的,比如都是MD5加密,而且加密的方式也一样,还有关键字段的数据类型等也是一样的。
经过一番努力,终于将网站(http://www.wetlands.cn)和论坛整合成功,你们现在可以看到论坛(http://www.wetlands.cn/bbs)已经有200多用户了!
OK,现在和我一起回顾一下我是如何整合的!
分析:
详细分析了ecms4.6整合dz时对数据表的改动。 ecms4.6整合dz后,将舍弃自己的数据表phome_enewsmember,而转为使用cdb_members,并在cdb_members中增加phome_enewsmember中存在的而cdb_members中没有的字段,其中uid username password 和email是最关键的字段了。整合后cdb_members中多出了"enewsgroupid,enewsrnd,enewsuserfen,enewsmoney,enewsuserdate,enewstodaydate,enewstodaydown,enewszgroupid,enewshavemsg"这些字段。因此,我只要把phome_enewsmember的数据insert 到cdb_members后就可以了。
动手:
1 备份 cdb_members 和 phome_enewsmember,嘿嘿,无论做什么事情,尤其这种数据操作,备份没有坏处,给自己留条万一不成功的后路。做人也是这样的哦,有点扯远了。(可以再复制到另外两个表中,比如cdb_members1和phome_enewsmember1)
2 查看你的dz已经注册多少用户,将注册的用户数的个数记为N,执行SQL语句
update phome_enewsmember1 set userid=userid+N
解释:保证你phome_enewsmember1中的userid,可以顺序添加到cdb_members中的uid后
3 将phome_enewsmember1中的数据添加到cdb_members中,执行SQL语句
insert into cdb_members (uid,username,password,secques,gender,adminid,groupid,groupexpiry,extgroupids,regip,regdate,lastip,lastvisit,lastactivity,lastpost,posts,digestposts,oltime,pageviews,credits,extcredits1,extcredits2,extcredits3,extcredits4,extcredits5,extcredits6,extcredits7,extcredits8,email,bday,sigstatus,tpp,ppp,styleid,dateformat,timeformat,pmsound,showemail,newsletter,invisible,timeoffset,newpm,accessmasks,editormode,customshow,xspacestatus,enewsgroupid,enewsrnd,enewsuserfen,enewsmoney,enewsuserdate,enewstodaydate,enewstodaydown,enewszgroupid,enewshavemsg) select userid,username,password,'',0,0,10,0,'','',1179119279,'',1179119279,1179119279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,email,0000-00-00,0,0,0,0,'',0,0,0,1,0,9999,1,0,2,26,0,groupid,rnd,userfen,money,userdate,todaydate,todaydown,zgroupid,havemsg from phome_enewsmember;
解释:这个是保证将phome_enewsmember中的userid,username,password和email导入到dz的cdb_members中,其中的数字10为用户组,数字串1179119279是注册时间以及登陆时间等,这个数字转换之后是20070514,你可以改成你想要的时间。
4 将phome_enewsmember1中的userid导入到 cdb_memberfields中,执行SQL语句
insert into cdb_memberfields (uid,nickname,site,alipay,icq,qq,yahoo,msn,taobao,location,customstatus,medals,avatar,avatarwidth,avatarheight,bio,sightml,ignorepm,groupterms,authstr,spacename) select userid,'','','','','','','','','','','','',0,0,'','','','','','' from phome_enewsmember1
这些做完后去dz的后台里面更新数据缓存,就ok了!
可能碰到的问题:
1 如果phome_enewsmember内部,或者与cdb_members中有相同的用户名,那么将不会导入成功,你可以根据导入时出现的错误提示将相同的username删除,SQL语句为:
select * from phome_enewsmember1 where username='相同的username'
2 如果只是将phome_enewsmember的部分数据导入cdb_members中而出错,想重新导入,可以使用如下SQL命令来删除导入的数据:
delete from cdb_members where uid>N
|
[该贴被修改 1 次,最后修改时间 2007-05-20 19:59:00 ]
|