问题分析:
在使用官方转换程序转换过程中出现 「在对应所需名称或序数的集合中,未找到项目」 的错误提示。这种问题,大多出现在 Access 数据库转换为 Discuz! 的过程中。主要是因为原数据库相应数据库表中包含的字段与转换程序中不完全符合,从而造成了转换程序找不到原数据库表中对应的字段,提示错误。
解决方法:
将转换程序中的字段与原数据库表字段相比较,去除转换程序中的多余字段,然后保存,重新开始转换。
下面以 Leadbbs4.0 Access 数据库转换到 Discuz! 6.0 为例,来说明具体如何修改:
假设转换过程中出现以下问题提示:
Fatal error: Uncaught exception 'com_exception' with message 'Source: ADODB.Fields
Description: 在对应所需名称或序数的集合中,未找到项目。' in E:wwwdzbbs60XConvertdataleadbbs40acstep_1.php:15 Stack trace: #0 E:wwwdzbbs60XConvertdataleadbbs40acstep_1.php(15): unknown() #1 E:wwwdzbbs60XConvertincludeconvert.inc.php(66): require_once('E:wwwdzbbs60...') #2 E:wwwdzbbs60XConvertindex.php(14): require_once('E:wwwdzbbs60...') #3 {main} thrown in E:wwwdzbbs60XConvertdataleadbbs40acstep_1.php on line 15
那么,根据以上提示,打开 E:wwwdzbbs60XConvertdataleadbbs40acstep_1.php,搜索找到:
$fieldarray = array('id', 'username', 'pass', 'mail', 'address', 'sex', 'birthday', 'applytime', 'icq', 'oicq', 'sessionid', 'online', 'prevtime', 'userphoto', 'ip', 'userlevel', 'homepage', 'underwrite', 'printunderwrite', 'points', 'officer', 'login_ip', 'login_oknum', 'login_falsenum', 'login_lastpass', 'login_rightip', 'onlinetime', 'announcenum', 'lastdoingtime', 'faceurl', 'facewidth', 'faceheight', 'userlimit', 'showflag', 'messageflag', 'nonglibirth', 'announcetopic', 'announcegood', 'uploadnum', 'charmpoint', 'cachetvalue', 'usertitle', 'notsecret', 'question', 'answer', 'lockip', 'lastwritetime', 'extentflag', 'idcard', 'mobiletel', 'telephone', 'truename', 'lastannounceid', 'announcenum2');
因为第一步 step_1.php 转换的是会员数据,因此打开原 Access 数据库中的会员表 user 表,将其中的字段与上面 $fieldarray 中的字段比较,去除转换程序中多余的字段,然后保存转换程序,重新开始转换。