H2 database error: Database may be already in use: “Locked by another process”

运行java项目的单元发现了一个报错:

org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked by another computer: 172.24.102.84". Possible solutions: close all other connection(s); use the server mode [90020-192]

 

错误信息的意思是,单元测试访问的h2数据库已经锁住了,无法访问。

 

项目中的h2配置为:

db.jdbcUrl=jdbc:h2:~/h2db/test2;MODE=Oracle;DB_CLOSE_DELAY=-1;FILE_LOCK=SOCKET
db.user=root
db.password=root
db.driverClass=org.h2.Driver

 

项目中使用的h2数据库方式,是嵌入式的,并且多个单元测试类使用h2数据库,说明嵌入式的h2数据库允许多个测试类同时访问

 

通过参考网上的资料,找到了解决方案:

将访问嵌入式的h2数据库,改为访问h2服务:

我在49.233.203.197的远程服务器上部署了h2服务,改为访问这个远程的h2数据库

将h2配置改为:

db.jdbcUrl=jdbc:h2:tcp://49.233.203.197:19200/~/test;MODE=Oracle;DB_CLOSE_DELAY=-1;FILE_LOCK=SOCKET
db.user=sa
db.password=
db.driverClass=org.h2.Driver

 

h2服务也可以在项目本地部署,然后访问本地的服务

 

部署h2服务参考:在linux系统部署h2服务

 

参考:

1.H2 database error: Database may be already in use: “Locked by another process” : https://stackoverflow.com/questions/8158969/h2-database-error-database-may-be-already-in-use-locked-by-another-process

 

posted @ 2020-02-25 21:16  徐浩进  阅读(4118)  评论(0编辑  收藏  举报