SQLite古怪的数据库表锁

时间:2016-03-17 14:00:42

标签: java sqlite

我正在使用 sqlite 作为应用程序的数据库。它可以正常工作,但是当我要从数据库中删除表时,它会使用[https://bitbucket.org/xerial/sqlite-jdbc抛出此错误]:

错误

java.sql.SQLException: [SQLITE_LOCKED]  A table in the database is locked (database table is locked)

我正在使用 no-auto-commit-mode ,所以在删除我已提交的表之前。为什么会发生这种情况?

一种可能的解决方案是关闭连接并重新打开它,但由于其他操作同时发生,因此无法完成此操作。

**

解决方案是:------------------------

**

我使用以下方法将表的行计数到线程中:

connection1.createStatement().executeQuery("SELECT COUNT(*) FROM LIBRARIES;").getInt(1);

但这会返回一个从未关闭的结果集,因此数据库表永远被锁定!!

1 个答案:

答案 0 :(得分:1)

这是FAQ。 当一个人正在编写时,多个程序/线程不可能同时访问数据库。

您应设置超时以允许您的线程等待其他人完成。