SQLite Versuch, einen schreibgeschützten Datenbankfehler zu schreiben
Ich habe eine Konsolenanwendung, die eine SQLite-Datenbank auffüllt. Wenn die Anwendung von selbst ausgeführt wird, werden keine Fehler angezeigt. Wenn ich mehrere Instanzen der Anwendung ausführe, in denen sich jede Anwendung in einem eigenen Ordner befindet und jede ihre eigene Datenbank auffüllt, tritt gelegentlich die folgende Ausnahme auf:
System.Data.SQLite.SQLiteException (0x80004005): Attempt to write a read-only database
attempt to write a readonly database
at System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
Ich weiß, dass die Datenbank nicht schreibgeschützt ist, da bereits Daten in diese Datenbank geschrieben wurden. Außerdem fährt die App fort und füllt die Datenbank weiterhin mit Daten. Ich habe den Fehler nicht reproduziert, wenn nur eine einzelne Instanz der Anwendung ausgeführt wird.
Ich habe versucht, das Pragma zu verwenden, um sowohl das Journal als auch temp_store im Speicher anstatt in einer Datei zu haben, falls es zwischen Anwendungen zu Konflikten kommen könnte, aber ich erhalte trotzdem den Fehler. Ich bekomme immer den Fehler in der gleichen Methode, was das erste Mal ist, dass ein Insert für die Verbindung passieren würde. Um einen allgemeinen Überblick über die Funktionsweise der Anwendung zu erhalten, werden Fälle durchlaufen, Informationen zu diesen Fällen gesammelt (nicht von SQLite) und die Ergebnisse in die SQLite-Datenbank geschrieben.
Ich weiß nicht, was ich noch versuchen soll.
* edit Ich benutze auch den PRAGMA journal_mode = MEMORY. Beim Einfügen von Daten in die SQLite-Datenbank führe ich zuerst eine BEGIN-Anweisung und dann eine Reihe von Einfügungen vor der END-Anweisung aus. Der Fehler tritt beim ersten Einfügen auf.