I seem to have a database that has been corrupted.  I'm trying to figure out 
what I did wrong and how to keep it from happening again.  This is with SQLite 
3.3.x.

There is a simple table as follows:

CREATE TABLE Statistic
(
        StatID INTEGER PRIMARY KEY,
        OwnerType INTEGER NON NULL,
        ItemName TEXT NON NULL, 
        StatName TEXT NON NULL
);
CREATE INDEX Ind_Statistic_StatName on Statistic (StatName);

When I do a SELECT * FROM Statistic, I get:

1|4|\\MACHINE1\Memory\Pages/sec|CounterValue
2|4|\\MACHINE1\Paging File(_Total)\% Usage|CounterValue
3|4|\\MACHINE1\PhysicalDisk(_Total)\Avg. Disk Read Queue Length|CounterValue
4|4|\\MACHINE1\PhysicalDisk(_Total)\Avg. Disk sec/Read|CounterValue
5|4|\\MACHINE1\PhysicalDisk(_Total)\Avg. Disk sec/Write|CounterValue
6|4|\\MACHINE1\PhysicalDisk(_Total)\Avg. Disk Write Queue Length|CounterValue
7|4|\\MACHINE1\Processor(_Total)\% Processor Time|CounterValue
8|4|\\MACHINE1\Processor(_Total)\Interrupts/sec|CounterValue
9|4|\\MACHINE2\Memory\Pages/sec|CounterValue
10|4|\\MACHINE2\Paging File(_Total)\% Usage|CounterValue
11|4|\\MACHINE2\PhysicalDisk(_Total)\Avg. Disk Read Queue Length|CounterValue
12|4|\\MACHINE2\PhysicalDisk(_Total)\Avg. Disk sec/Read|CounterValue
<snip... you get the picture...>
12|||
12|||
12|||
12|||
12|||
<snip ... many more of these bogus 12 rows>
149|||
129|||
11|||
11|||
11|||
11|||
<snip... many more of these 11 rows>
411|4|\\MACHINE3\Paging File(_Total)\% Usage|CounterValue
412|4|\\MACHINE3\PhysicalDisk(_Total)\Avg. Disk Read Queue Length|CounterValue
413|4|\\MACHINE3\PhysicalDisk(_Total)\Avg. Disk Write Queue Length|CounterValue
<snip... many more good rows>

How did I get so many duplicate primary keys???  (a proper 129 and 149 StatID 
row also exist).  How was the NON NULL ignored?

Further, if I do 
SELECT * FROM Statistic WHERE StatID=11;
I only get one row back (the proper row), and I can't seem to select those 
bogus rows.

I've tried running VACUUM, which fails with "contraint failed".  
sqlite3_analyzer has these odd statistics:
Pages in the whole file (measured).... 26225     
Pages in the whole file (calculated).. 26228     
Pages that store data................. 26228      100.011% 
Pages on the freelist (calculated).... -3          -0.0% 
Size of the file in bytes............. 26854400  
Bytes of user payload stored.......... 63512        0.24% 

I'm _guessing_ this is a file corruption issue (trying to find out if there was 
a power outage, etc).   I _think_ (still verifying) that "PRAGMA synchronous = 
OFF;" was set, so if it is corrupted, I'll have to accept that it was my fault.

Is there anything I can do to fix this or prevent it (other than changing 
PRAGMA synchronous) in the future?

Thanks for any ideas.
Doug


-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to