我遇到了以下错误:在整个应用程序中只使用一个数据库对象,但从两个不同的线程访问数据库时出现了问题。
数据库连接池'/data/data/msv_database.db'无法向802线程授予连接(当前连接:0个活动的、1个闲置的、0个可用的)。
数据库连接池'/data/data/msv_database.db'无法向802线程授予连接(当前连接:0个活动的、1个闲置的、0个可用的)。
可能你想在一个正在使用事务的表上执行查询,而这个事务没有结束。尝试在事务的finally块中执行endTransaction()
。
或者
你正在更新两个表格,而两个不同的事务正在等待另一个释放不同的表格。
或者
可能只是有太多的开放连接,导致数据库或连接池混乱。
无论是以上哪种情况,都可能出现问题。请仔细检查。
更多信息- Connection pool has been unable to grant a connection to thread。
我希望这与你所面临的问题相关。我在contentProvider中保存了SQLiteOpenHelper。我添加了db.beginTransaction、db.setTransactionSuccessful和db.endTransaction到我的CRUD操作中。但当我从一个loader和一个intentService中调用我的contentProvider时,将它们删除后问题得到解决。很奇怪,许多人提到这些命令对于避免错误很重要。