[英]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.