这个稍微有点违背我的使用习惯,但是问题还不太严重,具体问题描述如下:
- 我DataGrip指定了h2的数据库文件,url为:
jdbc:h2:file:~/test2;AUTO_SERVER=TRUE;
- 我Java代码中指令了h2的数据库文件,url为:
jdbc:h2:file:~/test2;AUTO_SERVER=TRUE;
结果我Java代码启动的时候会报如下的错误:
Caused by: java.lang.IllegalStateException: The file is locked: nio:C:/Users/wujj/test2.mv.db [1.4.200/7]
at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:950)
at org.h2.mvstore.FileStore.open(FileStore.java:172)
at org.h2.mvstore.MVStore.<init>(MVStore.java:381)
at org.h2.mvstore.MVStore$Builder.open(MVStore.java:3579)
at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:170)
... 117 more
这个现象从原理上很好理解的,两个进程操作同一个文件,会造成很多的问题,所以将这个文件锁住,阻止另一个文件访问时很有必要的。