SQLite试图写只读数据库错误

本文关键字:数据库 错误 只读 SQLite | 更新日期: 2023-09-27 18:06:17

我有一个填充SQLite数据库的控制台应用程序。当应用程序自己运行时,我没有得到任何错误。如果我运行应用程序的多个实例,其中每个应用程序都在自己的文件夹中,每个应用程序填充自己的数据库,我偶尔会得到以下异常:

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()

我知道DB不是只读的,因为它已经向该数据库写入了数据。同时,应用程序将继续向数据库中填充数据。当只有一个应用程序实例正在运行时,我没有重现错误。

我试过使用pragma将日志和temp_store都放在内存中,而不是放在一个文件中,以防在那里的应用程序之间存在一些争用,但我仍然得到错误。我总是在相同的方法中得到错误,这是连接第一次发生插入。为了给应用程序一个大致的概念,它循环遍历案例,收集关于这些案例的信息(不是从SQLite),然后将结果写入SQLite数据库。

我不知道还能试什么

*编辑我还使用PRAGMA journal_mode=MEMORY。在向SQLite数据库插入数据时,我首先运行BEGIN语句,然后在END语句之前执行一系列插入操作。第一次插入时出现错误

SQLite试图写只读数据库错误

这是权限问题。

确保你的web应用程序有对sqlite数据库所在文件夹的添加/写/创建/删除权限。

有关详细信息,请参阅

也可能是数据库文件不被MigrationAssembly支持

当EF试图迁移一个预计是SQLite数据库的文件时,也会抛出相同的异常。文本文件