常見問題與回答
建南機(jī)器50多年智能化產(chǎn)品服務(wù)商您當(dāng)前的位置:首頁 / 服務(wù)中心 / 常見問題與回答 / 系統(tǒng)提示“Not a table DBF”后如何處理?
這個問題同樣是可能發(fā)生在意外停電或非法關(guān)機(jī)或死機(jī)狀態(tài)下。只是破壞的是數(shù)據(jù)庫文件本身,而不是索引文件。在我們解決問題之前,我們不妨先來看一個數(shù)據(jù)庫文件的結(jié)構(gòu)。以Issucard.dbf為例。
當(dāng)庫記錄為空時,其文件頭格式為:
00000000h:03 00 07 19 00 00 00 00 A1 01 6F 00 00 00 00 00
當(dāng)庫記錄不為空又出錯時,文件頭格式為:
00000000h:03 00 07 1B 8D 2F 00 00 A1 01 6F 00 00 00 00 00
我們不難看出,除劃線部分相同而又不空外,還有3個字節(jié)不相同,當(dāng)我們試著改變其中任意一個字節(jié),就會找出一個規(guī)律:當(dāng)?shù)?個字節(jié)以16進(jìn)制算法減1時,數(shù)據(jù)庫就少一條記錄;當(dāng)?shù)?個字節(jié)減少到00時,再將第5個字節(jié)按16進(jìn)制算法減1,數(shù)據(jù)庫也少一條記錄;當(dāng)?shù)?個字節(jié)按16進(jìn)制算法減1時,數(shù)據(jù)庫少16條記錄。以上出錯的數(shù)據(jù)庫在將第4個字節(jié)改為8C時,庫文件恢復(fù)正常。
由此可以判斷,當(dāng)數(shù)據(jù)庫在遭到意外來不及正常關(guān)閉時,其前一條記錄保存是正常的。因此,我們只需將第5或者第6個字節(jié)按16進(jìn)制算法減1,即可將破壞的數(shù)據(jù)庫文件恢復(fù)。

上圖為issucard.dbf庫有兩條記錄的正確庫示意圖,解剖其各字節(jié)含義如下:00000000h00(庫標(biāo)志),00000000h01-03(記錄最后訪問年-月-日),00000000h04-07(記錄條數(shù)),00000000h08-09(記錄起始位’141’),00000000h0a(單條記錄長度),00000020h0b-0c(字段類型及起始位),00000030h00(字段長度),00000140h00(記錄起始標(biāo)志’0D’),000001c0h0a(記錄終止位),000001c0h0b(記錄終止標(biāo)志’1A’)。記錄條數(shù)=(記錄終止位-記錄起始位)/單條記錄長度。
0745-2380548
湖南省懷化市麻陽苗族自治縣工業(yè)集中區(qū)長壽產(chǎn)業(yè)園鴻基樓