運行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