常見問(wèn)題與回答
建南機(jī)器50多年智能化產(chǎn)品服務(wù)商您當(dāng)前的位置:首頁(yè) / 服務(wù)中心 / 常見問(wèn)題與回答 / 系統(tǒng)提示“Not a table DBF”后如何處理?
這個(gè)問(wèn)題同樣是可能發(fā)生在意外停電或非法關(guān)機(jī)或死機(jī)狀態(tài)下。只是破壞的是數(shù)據(jù)庫(kù)文件本身,而不是索引文件。在我們解決問(wèn)題之前,我們不妨先來(lái)看一個(gè)數(shù)據(jù)庫(kù)文件的結(jié)構(gòu)。以Issucard.dbf為例。
當(dāng)庫(kù)記錄為空時(shí),其文件頭格式為:
00000000h:03 00 07 19 00 00 00 00 A1 01 6F 00 00 00 00 00
當(dāng)庫(kù)記錄不為空又出錯(cuò)時(shí),文件頭格式為:
00000000h:03 00 07 1B 8D 2F 00 00 A1 01 6F 00 00 00 00 00
我們不難看出,除劃線部分相同而又不空外,還有3個(gè)字節(jié)不相同,當(dāng)我們?cè)囍淖兤渲腥我庖粋€(gè)字節(jié),就會(huì)找出一個(gè)規(guī)律:當(dāng)?shù)?個(gè)字節(jié)以16進(jìn)制算法減1時(shí),數(shù)據(jù)庫(kù)就少一條記錄;當(dāng)?shù)?個(gè)字節(jié)減少到00時(shí),再將第5個(gè)字節(jié)按16進(jìn)制算法減1,數(shù)據(jù)庫(kù)也少一條記錄;當(dāng)?shù)?個(gè)字節(jié)按16進(jìn)制算法減1時(shí),數(shù)據(jù)庫(kù)少16條記錄。以上出錯(cuò)的數(shù)據(jù)庫(kù)在將第4個(gè)字節(jié)改為8C時(shí),庫(kù)文件恢復(fù)正常。
由此可以判斷,當(dāng)數(shù)據(jù)庫(kù)在遭到意外來(lái)不及正常關(guān)閉時(shí),其前一條記錄保存是正常的。因此,我們只需將第5或者第6個(gè)字節(jié)按16進(jìn)制算法減1,即可將破壞的數(shù)據(jù)庫(kù)文件恢復(fù)。
上圖為issucard.dbf庫(kù)有兩條記錄的正確庫(kù)示意圖,解剖其各字節(jié)含義如下:00000000h00(庫(kù)標(biāo)志),00000000h01-03(記錄最后訪問(wèn)年-月-日),00000000h04-07(記錄條數(shù)),00000000h08-09(記錄起始位’141’),00000000h0a(單條記錄長(zhǎng)度),00000020h0b-0c(字段類型及起始位),00000030h00(字段長(zhǎng)度),00000140h00(記錄起始標(biāo)志’0D’),000001c0h0a(記錄終止位),000001c0h0b(記錄終止標(biāo)志’1A’)。記錄條數(shù)=(記錄終止位-記錄起始位)/單條記錄長(zhǎng)度。
0745-2380548
market@hhjnc.com
湖南省懷化市麻陽(yáng)苗族自治縣工業(yè)集中區(qū)長(zhǎng)壽產(chǎn)業(yè)園鴻基樓