Tengo una aplicación de consola que llena una base de datos SQLite. Cuando la aplicación se ejecuta sola, no obtengo ningún error. Si ejecuto varias instancias de la aplicación, donde cada aplicación está en su propia carpeta y cada una llena su propia base de datos, ocasionalmente obtendré la siguiente excepción:
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()Sé que la base de datos no es de solo lectura porque ya ha escrito datos en esa base de datos. Además, la aplicación continúa y continuará ingresando datos en esa base de datos. No he reproducido el error cuando solo se está ejecutando una única instancia de la aplicación.
Intenté usar el pragma para tener tanto el diario como temp_store en la memoria en lugar de un archivo en caso de que pudiera haber alguna contención entre las aplicaciones allí, pero sigo recibiendo el error. Siempre obtengo el error en el mismo método, que es la primera vez que ocurre una inserción para la conexión. Para dar una idea general de lo que hace la aplicación, recorre los casos, recopila información sobre esos casos (no de SQLite) y luego escribe los resultados en la base de datos de SQLite.
No sé qué más probar.
*editar También estoy usando PRAGMA journal_mode=MEMORY. Al insertar datos en la base de datos SQLite, primero ejecuto una declaración BEGIN, luego un montón de inserciones antes de la declaración END. El error se produce en la primera inserción.
También podría ser que el archivo de base de datos no sea compatible con MigrationAssembly.
Se lanza la misma excepción cuando EF intenta migrar en un archivo que se espera que sea una base de datos SQLite que es fi. un archivo de texto.