gpt4 book ai didi

java - 为什么我会收到 SQLException : database is locked on my JDBC SQLite database?

转载 作者:IT王子 更新时间:2023-10-29 06:29:56 25 4
gpt4 key购买 nike

我有一个单线程应用程序,它在本地文件系统上的 3 个不同文件中使用 3 个 SQLite 数据库。

我创建了一个 DbAdapter 帮助程序类,它打开到 SQLite 数据库文件的连接。在此类中,我有一个创建连接的 open 方法和一个释放所有内容的 close 方法。

这 3 个数据库是从派生 DbAdapter 的类访问的。

在我的程序中,每个数据库访问都是这样的:

MyDbAdapter DB = new MyDBAdapter();
int stuff = DB.getStuff(); // queries the database
DB.close();
// now do something with `stuff`

我已将所有对 DbAdapter.openDbAdapter.close 的调用记录到 stdout。每次有一个 open() 时,一个 close() 紧随其后。
我还注意关闭我所有的 Statement(这将导致关联的 ResultSet 也被关闭)。

所以我想我的数据库访问是干净的,因为我试图让它们尽可能短,并且在我不再需要它们时立即释放所有资源。

但是,我仍然收到 java.sql.SQLException: database is locked

有什么地方我做的不对吗?我知道我没有显示任何代码,但我必须发布大量代码并且它们不相关。我只是问我是否使用了这里的最佳实践,因为我认为我使用了并且我仍然遇到异常。

这是在 Mac OS 10.6 x64 上使用 Java 1.6,Xerial.org 的 sqlite-jdbc-3.7.2 驱动程序

最佳答案

我注意到我有无法终止的奇怪 Java 进程。我跑了:

ps aux | grep java | grep -v grep | awk '{print$2}' | xargs sudo kill -9

但那些进程仍然存在(具有相同的 PID)。

我重新启动,问题不再出现。这没有意义,因为我能够在没有任何崩溃的情况下进行大量数据库调用,只有一个调用导致了异常。我完全不明白发生了什么,但我不再遇到这个问题。

欢迎任何真实的回答。

关于java - 为什么我会收到 SQLException : database is locked on my JDBC SQLite database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com