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

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

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

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

  • 是否有可能获得一个apk的sqlite数据库的只读访问?
  • 在Android上的SQLite中查询和使用游标
  • SQLite数据库“上下文”传递给适配器
  • Android平台是否支持SpatiaLite?
  • android sqlite双向同步sqlite
  • 如何在SQLite中select大写值?
  • 为什么不推荐使用InsertHelper?
  • Android在Sqlite中通过Idselect行?
  • 我不能肯定地说这个特定的实现,但有一个连接池通常支持ORM。 连接池打开连接到数据库的一系列连接,并在closures它们并打开新连接时对其进行回收。 这个错误告诉你的是它可能达到了极限。 这可能发生的原因有很多种,其中一种是数据库中可能存在一些死锁,因为您正在更新两个表,而两个不同的事务处理正在等待另一个表的释放。 或者简单地说,有太多的开放连接,数据库或连接池只是混淆。

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

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

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

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