Per caso non viene chiusa la connessione ?
E' probabile che il file sqlite rimanga aperto per qualche motivo, non permettendone più la lettura da qualche altra applicazione che, invece, controlla il bit di chiusura.
Un consiglio per i campi autoincrement: se in ambiente multiutenza, nel range di tempo tra la lettura dell'ultimo valore, e la scrittura dello stesso incrementato, potrebbero esserci degli accessi contemporanei che rendono invalido lo sforzo. Se prendiamo il caso che il valore corrente sia 10, e predisponiamo il successivo inserimento con il valore 11, e se qualcuno nel frattempo chiede la stessa cosa, anche quest'ultimo imposterà il valore 11, per cui il database avrà due "11", incasinando così la chiave. Ovviamente, se è presente un controllo da parte del database (come su MySQL o PostgreSQL), l'ultimo record verrebbe rigettato, riportando un errore, ma in sqlite non sò cosa possa accadere...