自由的风's Archivers

From 自由的风 on 2013-05-05 20:35:55

Discuz论坛合并及问题解决

最近需要对两个独立的论坛进行合并,两个论坛的环境分别如下:



论坛一:Discuz 7.2,运行在Linux系统上,UTF8编码;



论坛二:Discuz X2.5,运行在Windows操作系统上,GBK编码。



整合的步骤如下:



1、对论坛一进行升级,首先从Discuz 7.2升级到Discuz X2.0,再从X2.0升级到X2.5,然后备份数据库;



2、将论坛二的数据库在管理后台进行备份,强制编码为UTF8



3、对两个论坛的数据进行合并,使用的是网友提供的专门工具:Discuz! X2.5合并工具



这个操作需要在本地进行,分别安装两个新的论坛并把论坛一论坛二的数据、附件、头像文件等各自恢复进去。





运行Discuz! X2.5合并工具,界面如下



<img src="http://loosky.net/Upload/2013/05/dzx25.jpg" alt="" />



数据库的相关信息请根据自己的实际情况进行填写,并指定论坛二的头像存放的位置。



正常情况下,可以进行成功的整合。数据库整合成功后,把论坛二的附件拷入论坛一的相应目录中,再将工具目录下生成的uc2_avatar目录下所有文件复制到论坛一的data\avatar\目录下即可,然后在后台进行一些相应的设置。



在实际操作中碰到了几个比较棘手的问题,如下:



1、由于两个论坛的版块设置有些重叠,就把原来的某些一级版块统一迁移到一个版块的下面,成为二级版块,造成二级版块过多。后来考虑到也不是很方便,就想通过在一级版块下面建立主题分类的形式来完成。这时就提出了一个需求,即将某个二级版块的内容迁移到某个主题分类下面



这个操作可以在前台直接完成,选择版块相应的帖子,并迁移到相应的分类



<img src="http://loosky.net/Upload/2013/05/tiezi.jpg" alt="" />



问题是版块下面的帖子太多,不太可能这样去操作,后台也没有提供可以全部一次性移动的工具,只好直接去操作数据库了。



在phpmyadmin或者其他工具中执行如下命令:



UPDATE `pre_forum_thread` SET `fid` = '136',`typeid`='64' WHERE `pre_forum_thread`.`fid` =103;

UPDATE `pre_forum_post` SET `fid` = '136' WHERE `pre_forum_post`.`fid` =103;

说明:数字103是帖子目前所在版块的ID,136是需要迁移过去的版块的ID,64是需要迁移过去的主题分类的ID。


多个版块,多次执行上面的命令即可,操作完成后,在后台更新一下缓存。



2、整合完成后,发现前台个人资料设置出现问题了,页面是一片空白。 <img src="http://loosky.net/Upload/2013/05/admin.jpg" alt="" />



经过程序跟踪调试,分析程序,在/source/include/spacecp/spacecp_profile.php中:



$defaultop = '';
$profilegroup = C::t('common_setting')->fetch('profilegroup', true);
foreach($profilegroup as $key => $value) {
if($value['available']) {
$defaultop = $key;
break;
}
}

$operation = in_array($_GET['op'], array('base', 'contact', 'edu', 'work', 'info', 'password', 'verify')) ? trim($_GET['op']) : $defaultop;

echo "== $operation ==";


正常的,$operation 是 base,可以正常编辑个人资料;异常的,$operation 是 空串,右边出现空白。



从程序中不难看出,问题出在C::t('common_setting')->fetch('profilegroup', true); 中。



查询数据库,发现profilegroup字段的值是0,正常情况下肯定不应该是这样的。



SELECT * FROM `pre_common_setting` WHERE skey = 'profilegroup'


于是重新安装了一次Discuz X2.5,得到了正常情况下的profilegroup的值,用这个正常的值去更新出现异常的profilegroup的值,语句如下:



REPLACE INTO `pre_common_setting` VALUES('profilegroup', 'a:5:{s:4:"base";a:4:{s:9:"available";i:1;s:12:"displayorder";i:0;s:5:"title";s:12:"基本资料";s:5:"field";a:17:{s:8:"realname";s:8:"realname";s:6:"gender";s:6:"gender";s:8:"birthday";s:8:"birthday";s:9:"birthcity";s:9:"birthcity";s:10:"residecity";s:10:"residecity";s:10:"residedist";s:10:"residedist";s:15:"affectivestatus";s:15:"affectivestatus";s:10:"lookingfor";s:10:"lookingfor";s:9:"bloodtype";s:9:"bloodtype";s:6:"field1";s:6:"field1";s:6:"field2";s:6:"field2";s:6:"field3";s:6:"field3";s:6:"field4";s:6:"field4";s:6:"field5";s:6:"field5";s:6:"field6";s:6:"field6";s:6:"field7";s:6:"field7";s:6:"field8";s:6:"field8";}}s:7:"contact";a:4:{s:5:"title";s:12:"联系方式";s:9:"available";s:1:"1";s:12:"displayorder";s:1:"1";s:5:"field";a:7:{s:9:"telephone";s:9:"telephone";s:6:"mobile";s:6:"mobile";s:3:"icq";s:3:"icq";s:2:"qq";s:2:"qq";s:5:"yahoo";s:5:"yahoo";s:3:"msn";s:3:"msn";s:6:"taobao";s:6:"taobao";}}s:3:"edu";a:4:{s:9:"available";i:1;s:12:"displayorder";i:2;s:5:"title";s:12:"教育情况";s:5:"field";a:2:{s:14:"graduateschool";s:14:"graduateschool";s:9:"education";s:9:"education";}}s:4:"work";a:4:{s:9:"available";i:1;s:12:"displayorder";i:3;s:5:"title";s:12:"工作情况";s:5:"field";a:4:{s:10:"occupation";s:10:"occupation";s:7:"company";s:7:"company";s:8:"position";s:8:"position";s:7:"revenue";s:7:"revenue";}}s:4:"info";a:4:{s:5:"title";s:12:"个人信息";s:9:"available";s:1:"1";s:12:"displayorder";s:1:"4";s:5:"field";a:10:{s:10:"idcardtype";s:10:"idcardtype";s:6:"idcard";s:6:"idcard";s:7:"address";s:7:"address";s:7:"zipcode";s:7:"zipcode";s:4:"site";s:4:"site";s:3:"bio";s:3:"bio";s:8:"interest";s:8:"interest";s:7:"sightml";s:7:"sightml";s:12:"customstatus";s:12:"customstatus";s:10:"timeoffset";s:10:"timeoffset";}}}');


ok,正常了!



在Discuz官方论坛上搜索了一下,发现类似的问题出现得挺多的,是个bug,而且官方也早就知道了,只是不知道为什么最新版中还会出现这个问题。



<img src="http://loosky.net/Upload/2013/05/bug.jpg" alt="" />


查看完整版本: Discuz论坛合并及问题解决

From 流河虾米 on 2014-01-05 12:16:02

我的论坛版本是X3.0gbk转为utf8的时候出现了个人资料不显示, 经过你的方法,目前恢复了。 太感谢了!

From 自由的风 on 2014-01-05 18:07:48

呵呵,客气了。这个bug当时找了好久。

Tags: Discuz, 论坛


©自由的风