H2 issue - org.h2.mvstore.MVStoreException: java.lang.AssertionError
에러 문구
1
2
3
4
5
6
7
Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed
to execute SQL script statement #1 of class path resource [schema-h2.sql]...
...
..
...
General error: "General error: ""org.h2.mvstore.MVStoreException:
java.lang.AssertionError: 36864 != 32768 [2.2.224/3]"" [50000-224]" [50000-224]
원인
embedded로 사용하던 h2 db 파일 손상
해결 방법
처음 실행하는 테스트를 지정해 둔 상태였기 때문에 첫 번째 테스트 코드 실행 전 사용하던 db 파일 삭제 후 실행 되도록 코드를 추가
TestRepositoryTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Order(0)
@SpringBootTest
class TestRepositoryTest {
@BeforeAll
static void h2Init() {
String dbFilePath = "./h2/member-test.mv.db";
String traceFilePath = "./h2/member-test.trace.db";
deleteFile(dbFilePath);
deleteFile(traceFilePath);
}
private static void deleteFile(String filePath) {
File file = new File(filePath);
String fileName = file.getName();
String result = file.exists() && file.delete() ? "성공 ⭕️" : "실패 ❌";
System.out.printf("======= `%s` \t 삭제 %s =======%n", fileName, result);
}
}
에러를 해결하면서 든 생각
그동안 공부 용도로 프로젝트를 진행하면서 간편한 사용성으로 인해 h2 db 만 사용해오고 있었는데, 앞으로는 h2 db의 사용을 자제해 보는 것이 좋겠다는 생각이 들었다.
사용한다면 테스트에서 인메모리 방식으로 잠깐씩 사용해보는 것으로!!
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.