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