h2数据库被锁定解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011870280/article/details/85099404

最近发生过H2数据库被锁定,项目启动不来的问题。

排查后发现是H2数据库当被打开时,都会创建一个锁定文件,以指示数据库正在使用的其他进程。如果关闭数据库,或者打开数据库的进程终止,则会删除此锁定文件。

而当java程序不是优雅关闭,直接kill掉java进程时,这个锁定文件没被删掉,下次启动项目就会报数据库被锁定。

查官网也提供了解决方案,改成socket锁定,不维护锁文件:

String url = "jdbc:h2:~/test;FILE_LOCK=SOCKET";

此外还有FILE,FS,NO等选项。其中NO是不锁数据库,但是有数据损坏风险。

猜你喜欢

转载自blog.csdn.net/u011870280/article/details/85099404