当前位置: 首页 > 面试题库 >

H2数据库错误:数据库可能已在使用中:“被另一个进程锁定”

储法
2023-03-14
问题内容

我正在尝试从Java应用程序使用H2数据库。

我通过H2控制台创建了数据库及其表,然后尝试使用

Connection con = DriverManager.getConnection("jdbc:h2:~/dbname", "username", "password");

但是,我收到以下错误:

线程“主”中的异常org.h2.jdbc.JdbcSQLException:数据库可能已在使用中:“已被另一个进程锁定”。可能的解决方案:关闭所有其他连接;使用服务器模式[90020-161]

我试图删除该dbname.lock.db文件,但会自动重新创建。

如何从Java程序解锁数据库以使用它?


问题答案:

H2仍在运行(我可以保证)。您需要将TCP连接用于多个用户,例如->

<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/C:\Database\Data\production;"/>

要么

DriverManager.getConnection("jdbc:h2:tcp://localhost/server~/dbname","username","password");

这也意味着您需要以TCP模式启动服务器。老实说,在文档中它非常简单。

强制终止该进程(对于Windows为javaw.exe),并确保关闭了可能已启动该进程的所有应用程序。您有一个活动锁。



 类似资料:
  • 问题内容: 我在golang中使用sqlite3数据库,但出现错误:“数据库已锁定”。 我知道使用同一数据库文件不能有多个线程。 尽管我的程序中只有一个连接并关闭了所有查询结果,但是它始终会创建2或3个数据库文件的句柄。 我通过使用opendfileview程序对它进行了云检查。 任何人都可以帮助我解决这个问题。提前致谢。 以下代码创建两个数据库文件句柄。 问题答案: 尝试延迟:

  • 问题内容: 所以我知道这个问题在烧瓶中并不陌生,而且人们以前已经问过。但是,由于我是python的新手,因此在bash中执行数据库命令时仍然遇到问题。这就是我所做的 但是执行插入语句后,我得到操作错误:数据库已锁定。有人可以简单地说出这个错误是什么意思吗?以及如何解决。提前致谢 问题答案: SQLite是一个轻量级的数据库,因此不支持高级别的并发性。OperationalError:数据库已锁定错

  • 问题内容: 我在我的应用程序中做了一些重复的操作(测试),突然我收到一个奇怪的错误: 我已经重新启动服务器,但是错误仍然存​​在。可能是什么呢? 问题答案: 从Django文档中: SQLite是一个轻量级的数据库,因此不支持高级别的并发性。OperationalError:数据库已锁定错误,表明你的应用程序并发性超过sqlite在默认配置下无法处理的并发性。此错误意味着一个线程或进程在数据库连接

  • 问题内容: 我需要将数据从一个数据库迁移到另一个数据库,两者都在同一本地系统上。 表和列的名称不同,我不能从旧数据库迁移所有列,因此 对我不起作用。 但我只有一个 我的查询中有什么错误,我该如何解决? 提前致谢 问题答案: 您的查询应如下所示: 更新 由于这个答案的关注程度超出了我的预期,因此我应该扩展这个答案。首先,从答案本身看可能并不明显,但各列不必具有相同的名称。因此,以下操作也将起作用(假

  • 问题内容: 如何从一个数据库复制到另一个数据库。 数据库名称visco 我想将所有表从visco数据库复制到新数据库名称作为neptune 我创建了一个没有任何表的数据库,然后尝试从database1.bak文件还原数据库,然后显示错误为 需要查询帮助 问题答案: 使用SQL Server Management Studio: 选项1 ->右键单击要复制的数据库 ->选择“任务”>“生成脚本” -

  • 我的pl/sql代码有问题。问题是:当我使用tns(用于远程数据库连接)尝试正常插入时,一切都正常 ORA-06512:a ligne 36 02069。00000-“此操作的全局_名称参数必须设置为TRUE”*原因:需要语句的远程映射,但无法实现,因为要实现它,全局_名称应设置为TRUE*操作:如果可能,发出alter session set global_名称=TRUE 问题是,当我将全局_名