H2数据库文件损坏恢复步骤
一、抽取H2数据库依赖包
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在maven项目中加入如上插件,执行package命令,会在target目录下生成lib包,把lib包拷贝到桌面,在lib包下执行如下命令。
二、修复db
在h2的lib包路径下打开cmd,执行如下命令,h2包的包名根据自己项目依赖修改。
java -cp h2-2.1.214.jar org.h2.tools.Recover -dir D:/opt/data/db -db my_db_name
执行以上命令后,会生成一个my_db_name.h2.sql,这个就是修复后生成的sql。
三、生成新的db
在执行完第二步后,再执行如下命令
java -cp h2-2.1.214.jar org.h2.tools.RunScript -url "jdbc:h2:D:/opt/data/db/my_db_name2" -user sa -password "" -script D:/opt/data/db/my_db_name.h2.sql
执行完成后,会在D:/opt/data/db目录下生成修复后的my_db_name2.mv.db文件,H2数据库修复完成。