我正在try 从Java应用程序使用H2数据库.

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

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

但是,我收到以下错误:

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

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

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

推荐答案

H2 is still running (I can guarantee it). You need to use a TCP connection for multiple users such as ->

<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),并确保可能启动该进程的任何应用程序都已关闭.你有一个活动锁.

Database相关问答推荐

为什么即使我的索引覆盖了 Select 中的所有列,但仍存在Heap Fetch?

重新运行后未找到 Taipy 场景

DBMS_RANDOM 是否默认安装?

在Prisma中建立关系

MYSQL CASE 语句多条件

MySQL 语法 LIMIT x, y 的 T-SQL 类似的功能是什么?

使用 Laravel 5.2 从存储在 Y-m-d 数据库中的日期计算年龄

便携式(PHPPass)密码哈希.我应该使用它们吗?

存储过程的缺点

行之间的 SQL 差异

如何在数据库中搜索和替换字符串的所有实例?

获取错误函数 to_date(timestamp without time zone, unknown) 不存在

找不到类型或命名空间名称SQLConnection

从 postgresql 转储文件填充 MySQL 数据库

谁有维基数据库?

mysql 无法从存储引擎读取自增值

为什么用 varbinary 而不是 varchar

MongoDB 是否支持浮点类型?

sqlite 时间戳格式化

包含 8000 万条记录并添加索引的表需要超过 18 小时(或永远)!怎么办?