论坛转换报告
我们原有的论坛使用的是基于 ASP 的 LeadBBS,后来由于服务器出现了一些小故障,导致 RegExp 对象不能用,于是论坛的许多用到正则表达式的功能全部失效。后来考虑将论坛整个转移到 PHP 系统上。而我维护的另一个论坛使用的是 NewvBB,这个系统是基于国外最流行的 vBulletion 修改而成的,该论坛相当成熟,管理功能也十分强大,于是就准备把论坛移动到 vBulletion 系统上。
目前面临的任务是 LeadBBS -> NewvBB。到网上查了一下资料,发现有关 LeadBBS 数据转换的程序很少,可能是由于在国内动网论坛独霸天下的原因吧。最后总算找到了一个 LeadBBS->phpWind 3.0的转换程序。经过进一步的调查,我决定了转换方法:LeadBBS -> phpWind 3.0 -> Discuz! 2.5F -> NewvBB 3.0。这样做起来相当麻烦,不过似乎是唯一可行的途径了。
-
LeadBBS->phpWind 3.0
这一步基本上没有遇到任何问题,简单地安装一个 phpWind 3.0,然后利用转换程序就能够把用户和帖子数据完整地转换过来。附件不能转换,不过算了,附件本来就不多,以后再慢慢手动修复吧。
转换后使用安装 phpWind 时设置的管理员密码进入 phpWind 的管理员界面,重新建立缓存。
-
phpWind 3.0->Discuz! 2.5F
这一步稍稍遇到一点困难。Discuz官方主页上找到的转换程序是 phpWind 2.0.1->Discuz! 2.5F的,直接利用该程序转换时,转换到第5步出现错误,说在 pw_tmsgs表中找不到用于 order by 语句的 id 列。查了一下数据库结构,发现 pw_tmsgs 中的字段名为 tid 而不是 id,于是修改转换程序的 340 行的列名为 tid ,于是转换成功。
转换成功之后试图登录管理面板结果失败了。查明原因,升级之后 Discuz! 原有的管理员的用户组id变成了普通用户,于是直接修改 cdb_members 表中 Admin 行的 adminid 和 groupid 列为管理员的相应值。管理员的用户组 id 可以在 cdb_admingroups 和 cdb_usergroups 表中找到。
修改之后即可成功登录管理员界面,重新建立缓存。
如果错误登录次数过多而导致被系统禁止登录,可以清除 cdb_failedlogins 表中的内容。
-
Discuz! 2.5F -> NewvBB 3.0
这一步也比较容易,直接利用留爱论坛上提供的转换程序即可成功转换。转换之后也同样遇到 admin 用户组变成普通用户的问题,修改 user 表中的 usergroupid 列即可。最后进入管理面板,更新缓存。