On 2015-03-16 09:49 PM, Dave Dyer wrote:
>> Do you still have a copy of the originally damaged Database? I believe a 
>> closer look to it will reveal more corruption than the assumed.
> I have the original database.  What other tests could I do to look for 
> evidence?
>
> It appears (so far) that the database I reconstructed from the dump (minus an 
> index request)
> contains all the original data, but that's hard to prove.

Yes but the dump doesn't provide automatic indices and row-ids etc. 
(some of which might be corrupt too). It is great that all the data is 
perfectly in tact, which means that the duplication problem ran into is 
likely the only problem that occurred.

>
>> I do however think you are on the right track with thinking that the 
>> duplicated transaction (or failure of rollback or program error or 
>> mishandling of a duplicate insert fail that cause the transaction to be 
>> either committed twice or not failed correctly or resubmitted without clear 
>> prior failure or success) is the culprit here, and I am fairly certain this 
>> can happen in the setup described above as per the 
>> http://www.sqlite.org/howtocorrupt.html
> It's likely in this case that the apple/microsoft cooperation on SMB is 
> ultimately at fault
> because it is breaking some guarantee that sqlite is depending on.  Their 
> file sharing is known
> to be crap. It's still worthwhile to try to get to the bottom of it as a 
> preliminary step to fixing it.

It isn't likely, it is almost guaranteed - but not because of the 
above-mentioned players as such - There simply is no actual networked 
system in existence (that isn't excruciatingly slow) that does 
file-locking correct via a network of any sort.

I will have to say very sadly that if you absolutely have to have a 
system where the DB file is not on the exact same machine (physical) 
than the client software (the bit using SQLite code), then SQLite is not 
a good choice - consider MySQL or Postgres perhaps. There was a crowd 
some time ago making an SQLite for client-server environments 
(SQLitening if memory serves), but I believe it's a commercial system.
See: http://www.sqlite.org/whentouse.html



Reply via email to