How to Recover from Corrupt Data Message

I have a large shared database that only two people use, me and one other. While trying to edit a TextEditor object, I received a corrupt data alert.

I closed the database, put it aside, and downloaded a copy of the database from the server. I immediately tried to save the new copy, and received a corrupt data issue.

The other user, at my request, tried to save the database and received a corrupt data message.

I am unsure how to proceed. We do have Time Machine backups that we can restore. It appears that I need to delete the server copy, restore a backup until I find one without any corruption, then re-share the database. That means some data will likely be lost.

Any other suggestions?

Panorama only checks for corruption when you open and save a database, so I guess this must have happened when an auto-save kicked in.

Did it give you a message about a particular record and/or cell being corrupted?

So are you saying you used the Server Admin wizard to download a completely fresh file from the server? Then when you opened this fresh file, did a corrupt data message appear when you opened the file? You specifically mentioned that the error appeared when you tried to save, so I’m thinking there was no error when opening. If that’s the case, it would seem that the copy on the server is ok. But if you open a database and then immediately save it, it is completely inexplicable to me that there would be no corruption when the database is opened, but then an error occurs a second later when nothing else has been done to the database. Unless there was something in the .Initialize procedure that was causing the corruption. Or somehow it is getting corrupted as it synchronizes with the server. I guess either of those could make some sense. If it’s synchronization, you could try going to the Client Preferences panel and check Disable Server Connections before you open the database. Then open and save the database and see if an error occurs. If there is no error, I would convert that copy to single user, then enable connections and re-upload that to the server.

The other user, at my request, tried to save the database and received a corrupt data message.

Was it the same message you got? In other words, the same record and cell were corrupted?

I am unsure how to proceed.

Your idea of using Time Machine should work, but with the information I have I can’t say whether that is the only possible course. If you download a file from the server and that file opens without a corruption error, that makes me think the server copy is ok. Mysterious.

Initially, the corruption was in row 1. I opened the datasheet and found an empty record, which I deleted. Then the corruption was in 73498 cell 22. I did not try to find that record.

Yes, download with Server Admin a fresh file. I opened it and received no message. I press command-S and the corruption message appeared. The file has been opened hundreds and probably thousands of times so how would an .Initialize procedure cause a problem?

BTW, I have the server file in case you would like to see it. I don’t know any way to open it, but I might try putting it on another server and check it again. [See below; I did this and did not find any corruption.]

The other user got the same row and cell number as corrupt. It seems highly likely that the corruption passed from one computer to the other, but I don’t know which way.

Using Time Machine allowed us to recover, but I used a copy 1.5 hours before the corruption was noticed and we lost a few recently added records; but they were reconstructed without too much difficulty. Possibly, I could have found a later backup file to use.

I am still quite confused about what is happening.

I just installed the server file on a different computer also running a server, and downloaded the DB without a problem! I did not expect that, since I had downloaded a copy of the DB right away and that newly downloaded file showed corruption. If this recurs, I will do more to track every keystroke after the corruption message appears.

I don’t blame you. This sounds very puzzling.

That means the file on the server was not corrupted. When you open a file, Panorama immediately checks it as soon as it lands in memory. If it is corrupted, Panorama rejects the file, it flushes it from memory, the windows don’t open, and an error is reported. So if no error is reported, the file is ok.

This indicates that the corruption happened on your computer, after the file was opened (because we know it was ok when loaded into memory).

Don’t know, and maybe it isn’t the cause, but somehow the file had to change between when it was opened and when you pressed Command-Save. There are only two steps that happen during that period that I can think of.

  1. The file is synchronized with the server.
  2. The .Initialize procedure runs.

Of course, the third option is that there is a hardware problem, but since this happened multiple times and only with this one file, that seems very unlikely.

Hmm, on further reflection, since you downloaded a fresh copy of the file from the server, the synchronization step should not do anything, since the file would already be 100% synchronized.

I agree on the highly likely part, and the “don’t know which way” part also. Actually, if corruption every happens I don’t know how, since if I did I would just fix that part of the program. Ideally corruption should only happen if a cosmic ray bonks your memory chip or a magnetic field zaps your hard drive (not sure about what the failure modes for SSDs are).

Sounds like bad RAM to me- something like this happened to me years ago and replacing the RAM fixed it.