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

Bas*_*der 30 sqlite android greendao

我正在使用GreenDAO在Android中进行数据库处理.当执行许多数据库更改(> 15.000)时,我收到此错误消息:

数据库'/ data/data/...'的连接池无法使用标志0x1授予与线程312(Thread-312)的连接30.000002秒.

一切都被困住了.为什么会发生这种错误?

hku*_*uay 34

当我想要在没有结束事务的事务上使用的表上选择查询时,我收到此消息.endTransaction()在最后一个事务块上执行后问题解决了.


Kae*_*iil 11

我不能肯定地说这个特定的实现,但是有一个连接池通常支持ORM.连接池打开一组与数据库的连接,并在关闭它们并打开新连接时对其进行回收.这个错误告诉你的是它可能达到了极限.可能发生了很大的多种原因,一个是可能存在的DB一些僵局,因为你正在更新两个表和两个不同的事务持有不同的表,等待对方释放.或者只是说有太多的开放连接,而数据库或连接池只是混淆了.

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

  • greenDAO 本身不使用任何连接池。使用 greenDAO 的应用程序的行为就像许多使用 SQLite 的 Android 应用程序一样。您可以使用某种 SQLiteOpenHelper 获得 SQLiteDatabase。DaoMaster/DaoSession 的实例引用这个 SQLiteDatabase 对象。 (2认同)