問題分析:

在使用官方轉換程序轉換過程中出現 「在對應所需名稱或序數的集合中,未找到項目」 的錯誤提示。這種問題,大多出現在 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 中的字段比較,去除轉換程序中多餘的字段,然後保存轉換程序,重新開始轉換。