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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM