我有一个填充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()
Run Code Online (Sandbox Code Playgroud)
我知道DB不是只读的,因为它已经将数据写入该数据库.此外,应用程序继续并将继续将数据填充到该数据库.当只有一个应用程序实例运行时,我没有重现错误.
我已经尝试使用pragma将日志和temp_store都放在内存而不是文件中以防万一在那里可能存在一些争用,但我仍然得到错误.我总是在同一个方法中得到错误,这是连接第一次插入.为了大致了解应用程序的作用,它会循环遍历案例,收集有关这些案例的信息(而不是来自SQLite),然后将结果写入SQLite数据库.
我不知道还有什么可以尝试的.
*编辑我也在使用PRAGMA journal_mode = MEMORY.在将数据插入SQLite数据库时,我首先运行BEGIN语句,然后在END语句之前运行一堆插入.第一个插入时发生错误.
| 归档时间: |
|
| 查看次数: |
10659 次 |
| 最近记录: |