连接池一直无法授予与线程的连接

我正在使用GreenDAO进行Android中的数据库处理。 执行多个数据库更改(> 15.000)时,出现此错误消息:

数据库“/ data / data / …”的连接池无法授予与标志0x1为30.000002秒的线程312(线程312)的连接。

一切都卡住了。 为什么会发生这个错误?

Solutions Collecting From Web of "连接池一直无法授予与线程的连接"

我不能肯定地说这个特定的实现,但有一个连接池通常支持ORM。 连接池打开连接到数据库的一系列连接,并在closures它们并打开新连接时对其进行回收。 这个错误告诉你的是它可能达到了极限。 这可能发生的原因有很多种,其中一种是数据库中可能存在一些死锁,因为您正在更新两个表,而两个不同的事务处理正在等待另一个表的释放。 或者简单地说,有太多的开放连接,数据库或连接池只是混淆。

对不起,这不是一个真正的答案,但你需要看看GreenDAO的文档,看看这可能会发生。

当我想要在事务处理中使用的表上select查询之前,我收到了这条消息。 在finally事务块上执行endTransaction()时,问题就解决了。

当通过DBFlow FlowQueryList创build到SQLite的太多连接时,我得到了这个消息。 我的解决scheme是确保一旦完成查询列表,就可以在查询列表中调用endTransactionAndNotify() ,然后close()

单独调用endTransactionAndNotify()并不能解决问题。 我希望这有助于,这个线程当然帮助了我。