经过三个星期日夜奋战,网站改版和论坛迁移基本完成,期间艰辛一言难尽啊,尤其是论坛迁移,走了很多弯路,现将迁移过程整理分享出来,供各位朋友参考。
原论坛:dvbbs .net1.1 ,数据库:Ms SQL2008
目标论坛:discuz! X2.5,数据库:MySQL 5.1.52
迁移过程:
dvbbs .net1.1无法一步到位迁移到discuz! X2.5,流程应该这样:dvbbs .net1.1-->discuz!7.2-->discuz!X2-->discuz!X2.5。
1.下载discuz!7.2,到discuz!官网下载,下载地址:http://download2.comsenz.com/Discuz/7.2/Discuz_7.2_SC_UTF8.zip,我用的是UTF-8版,运行安装,这个很简单,官网有教程,在此不赘述了。
2.上论坛转换网下载DV.Net to Discuz7.2论坛转换工具,这个是转换的关键。
3.关闭原论坛,运行论坛转换工具,填上数据库连接用户名,密码和数据库名称,就可以轻松将原论坛MsSQL数据转换到MySQL中来,现在新论坛discuz!7.2基本可以运行,其它的先不去管,备份好新的数据库(phpmyadmin备份)和网站文件(tar cvf bbs.tar bbs/),这样就可以尽情的修改了,没改好大不了重来 。
4.升级discuz!7.2的UCenter 到最新的1.6.0版(参考discuz!网官教程)。
5.下载discuz!X2,升级discuz!7.2到X2,具体步骤参考官方教程,注意:升级完成后论坛已经无法登录,没关系,继续下一步,下载discuz!X2.5,升级X2到X2.5,升级过程同上,论坛仍然无法登录。
6.迁移UCenter数据库,使用phpmyadmin,选择discuz(discuz!7.2的数据库)中“cdb_uc_”前缀的数据表,导出为uc.sql文件,再将uc.sql文件导入到discuzx2(discuz!X2.5使用的数据库)中,在discuzx2中删除"pre_ucenter_"前缀的表,然后将导过进来的以"cdb_uc_"为前缀的表修改前缀为"pre_ucenter_"。(phpmyadmin真的很方便! ),登录论坛试试,成功了!~~
7.修改config/config_global.php中的$_config['admincp']['founder'] = '';填写正确的创始人uid,登录后台,修改ucenter应用,直到通讯成功(看官方教程),设置论坛参数。
8.迁移附件:将原论坛file/uploadfiles中的所有文件上传到新论坛中data/attachment/forum目录下。
修改数据库使显示附件(原论坛与新论坛标签不一样,所以附件显示为源码):
update pre_forum_post set attachment="1";
update pre_forum_post SET message=replace(message,'[upload=jpg]','<img ');
update pre_forum_post SET message=replace(message,'[/upload]','> ');
update pre_forum_post SET message=replace(message,'UploadFile','src=');
update pre_forum_post SET message=replace(message,'img src=/','img src=data/attachment/forum/');
update pre_forum_post set message = replace(message, substring(message, locate(',20', message),locate('.jpg', message)-locate(',20',message)+4),'')
update pre_forum_post set message=replace(message,'uploadimage','attachimg')
9.解决html解析问题。迁移过来的贴子显示为html源码,太乱了,修改一下:
修改数据库使解析html
update pre_forum_forum f, pre_forum_post p set p.htmlon=p.htmlon|1 where p.fid=f.fid and f.allowhtml='1';
10.解决中文用户名无法登录问题(数据转换的时候创建uc表GBK编码不对,导致新论坛中的uc表中文用户名乱码)。
update pre_ucenter_members set pre_ucenter_members.username=(select pre_common_member.username from pre_common_member where pre_ucenter_members.uid=pre_common_member.uid)
大功造成!!! |