Hello,

Given the following pragma integrity_check output:

> sqlite> pragma integrity_check;
> rowid 106931 missing from index sqlite_autoindex_MyDBState_1
> rowid 106933 missing from index sqlite_autoindex_MyDBState_1
> rowid 106935 missing from index sqlite_autoindex_MyDBState_1
> wrong # of entries in index sqlite_autoindex_MyDBState_1

Does this mean that:

1) the index is corrupted
2) the rowids are truly missing (data loss)

Running vacuum doesn't solve the problem. The documentation states the  
following about vacuum:

> The VACUUM command cleans the main database by copying its contents  
> to a temporary database file and reloading the original database  
> file from the copy. This eliminates free pages, aligns table data to  
> be contiguous, and otherwise cleans up the database file structure

I suspect that vacuum cannot fix this issue because there's nothing  
wrong with the index (structurally speaking). Am I correct? When this  
problem appears, is there a way to recover from this state? I would  
think that rebuilding the index would help, since the new ones would  
point to the right set of data. However, if there is a real data loss,  
dropping the index would only mask the real problem.

Any ideas?

Thanks,

-- Tito
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to