-
Notifications
You must be signed in to change notification settings - Fork 861
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sqlite多线程并发时报空异常 #1938
Comments
sqlite不支持多线程写 |
有什么推荐的做法吗?我在linux和windows上也是相同的程序写法,没有问题呀 |
有没有什么思路或者建议?从Microsoft.Data.Sqlite库那边的描述是说要避免多线程使用同一个连接,是不是可以从FreeSql的连接池着手? |
freesql 层面每次都是独立的 DbConnection |
我测试了一下,在数据库中插入了1000多条数据,然后开了10个线程读取数据,不做写操作,就会出现空异常
如果在多线程操作中再加上写操作,会出现数据库被锁定的异常。 所以多线程只是读取数据,会出现空异常,是不是说明同一个数据库连接在同一个时间点上被多个线程使用了? |
用 FreeSql.provider.Sqlite.dll 测试一下 |
同时用一个 DbConnection 读是不可能的,如果有早就有人反馈了。 |
FreeSql.provider.Sqlite.dll 没办法在android上跑吧。 我把库都升级到最新,概率大幅下降了,原本10线程在android上大概700-800次就会出现,升级后大概大几千次出现一次。 我暂时的想法是把所有的调用代码都加上try catch处理掉 |
在android上多线程同时读写sqlite数据库时报错,极小概率。在android上运行10几个小时可能会出现下面的错误,在linux和windows上没有这个问题。
在efcore项目中有人遇到类似的问题:
dotnet/efcore#20651
会不会是连接池中的连接池不够用,导致多个线程使用了同一个连接导致的?
构造freesql单实例的代码如下:
在android上运行10几个小时可能会出现下面的错误,在linux和windows上没有这个问题。
数据库版本
Sqlite3
安装的Nuget包
FreeSql: 3.2.682
FreeSql.Provider.Sqlite: 3.2.682
Microsoft.Data.Sqlite: 6.0.10
.net framework/. net core? 及具体版本
Xamarin.Forms: 5.0.0.1874
The text was updated successfully, but these errors were encountered: