繁体   English   中英

SQLite古怪的数据库表锁

[英]SQLite quirky database table lock

我正在使用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);

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

这是一个常见问题解答 编写一个程序时,多个程序/线程不可能同时访问数据库。

您应该设置一个超时时间,以允许您的线程等待其他线程完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM