Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 7 of 7 total
Thread Corrupt Table
Thu, May 3 2007 7:21 PMPermanent Link

Mauricio Campana Nonino
Tim

DBISAM 4.24 Build 1

I have a corrupted table. After repairing it, DBSYS says "TABLE... was successfully repaired". Then, if I try to open the table, DBSYS just closes with
no error message. Why repair doesn't fix the problem? Can you help me, please? I can send you the table if you want. Thanks,

Mauricio Campana Nonino
Nonino Software

Fri, May 4 2007 6:30 AMPermanent Link

"Jose Eduardo Helminsky"
Mauricio

<<
I have a corrupted table. After repairing it, DBSYS says "TABLE... was
successfully repaired". Then, if I try to open the table, DBSYS just closes
with no error message. Why repair doesn't fix the problem? Can you help me,
please? I can send you the table if you want. Thanks,
>>

Sometimes, there are much garbage stored in the fields and repair is not
able to *clean* this garbage.
You can use a SQL statement to try solving the problem using where condition
that filter all records and remove indesirable records.

For example:
select * into newtable where keyfields <> null

If the table is not so big then you could put it at binary NG and I can see
what I can help you.

Eduardo

Fri, May 4 2007 11:06 AMPermanent Link

Mauricio Campana Nonino
Eduardo,

Thanks for your help. I have already solved the problem in the follow way:

1) Repair "CorruptedTable";
2) CopyTable "CorruptedTable" to "TempTable";
3) Now I can open "TempTable" and delete garbage records;
4) CopyTable back to original table;

My question is: why RepairTable doesn’t automatically delete garbage records based upon record checksum?

Thanks,

Mauricio Campana Nonino
Nonino Software


Fri, May 4 2007 1:12 PMPermanent Link

Eryk Bottomley
Mauricio,

> My question is: why RepairTable doesn’t automatically delete garbage records based upon record checksum?

If it did that then a damaged checksum would cause RepairTable to
destroy (potentially) perfectly valid records.

Eryk
Fri, May 4 2007 5:28 PMPermanent Link

Mauricio Campana Nonino
Eryk,

<<If it did that then a damaged checksum would cause RepairTable to
destroy (potentially) perfectly valid records.>>

Yes, it makes sense. Although particularly in this table, the valid records had a correct checksum. So, another question: would be difficult to create a
CopyTableWithValidCheckSums function?

Thanks,

Mauricio Campana Nonino
Nonino Software

Mon, May 7 2007 12:58 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Mauricio,

<< Yes, it makes sense. Although particularly in this table, the valid
records had a correct checksum. So, another
question: would be difficult to create a CopyTableWithValidCheckSums
function? >>

I'll put it on the list of enhancement requests for DBISAM.

--
Tim Young
Elevate Software
www.elevatesoft.com

Mon, May 7 2007 1:41 PMPermanent Link

Mauricio Campana Nonino
Tim Young,

<<I'll put it on the list of enhancement requests for DBISAM.>>

Thanks Tim. I was trying to do it by myself, but I realize I could not. When I try to open that corrupted table, it pops up a "Corrupted Header Error".
Then I have to repair the table, but doing it automatically fixes the record checksum, and then I can not check if a record is valid.

Mauricio Campana Nonino
Nonino Software
Image