본문 바로가기
기타등등

Spring boot 내장 h2 DB, DBeaver 연결 + The write format 3 is larger than the supported format 2 [2.1.210/5] 에러 해결

by 큣큣 2025. 8. 6.

이번 포스트에서는 아래 2가지 문제에 대해 다루려고 한다. 


1. Spring boot 내장 h2 DB를 외부 DB툴에 연결하는 방법

2. Spring boot 내장 h2 DB를 외부 DB인 DBeaver에 연결할때, 발생하는 The write format 3 is larger than the supported format 2 [2.1.210/5]  에러 해결

 

1. Spring boot 내장 h2 DB를 외부 DB툴에 연결하는 방법

Spring Boot 에서 쓰는 H2는 Maven/Gradle 의존성(임베디드 H2)라서 기본적으로 메모리 안에서 실행되기 때문에 외부 접속이 불가능하지만, 몇가지 셋팅을 해주면 외부 DB 툴에서 연결해서 사용할 수 있다. 

방법 1. H2 TCP 서버 설정 추가

아래처럼 h2를 TCP모드로 사용해서 메모리 DB도 외부접속으로 가능하게 한다. 

단점 : 여전히 메모리 DB이기때문에 애플리케이션 끄면 데이터 날라가고, DB 커넥션도 끊김 => 여전히 휘발성!

jdbc:h2:tcp://localhost:9092/mem:testdb

 

방법 2. H2 를 파일 저장으로 변경 + `AUTO_SERVER=TRUE;` 설정 추가 

우선 아래처럼 db를 파일로 저장해서 애플리케이션 실행 여부과 관계없이 데이터가 유지되게 만들고,

jdbc:h2:~/testdb;

 

`AUTO_SERVER=TRUE;` 설정을 추가하여, 여러 프로세스가 db파일에 접근하도록 허용함.

이걸 설정하지 않으면 sping app이 실행될때나 DBeaver로 접속할때 두 프로세스 중 하나만 가능하다. 하지만 나는 spring app에서나 DBeaver랑 동시에 DB를 접속할꺼니까, 저 옵션을 꼭 추가해주어야한다!

jdbc:h2:~/testdb;AUTO_SERVER=TRUE;

 

나는 두번째 방법으로 사용중이다. 

 

 

2. Spring boot 내장 h2 DB를 외부 DB인 DBeaver에 연결할때,  The write format 3 is larger than the supported format 2 [2.1.210/5]  에러 해결

요즘 비교를 위해 유료 db 툴인 DataGrip과 무료 db툴 DBeaver를 번갈아 사용하고 있다.  DBeaver에서 위에서 설정한 Spring boot 내장 h2 DB연결이 안됐다! (DataGrip은 잘됐는지 말이지ㅠㅠ)

문제 원인 : DBeaver에서 지원하고 있는 h2 버전이 내가 현재 사용하고 있는 h2버전보다 낮아서 발생한 문제였음.  (나는 지금 2.3.232 버전 사용중) 

해결방법 

1. https://www.h2database.com/html/download.html 에서 본인 버전에 맞는 h2를 다운로드한다

(jar 포맷으로 다운로드 할것)

2. DBeaver에서 h2 embeded를 누르고 DB 연결 창 > Driver Settings 클릭

3.   Driver Settings 창 > Libraries 탭 > Add File 클릭 후 아까 다운로드한 h2 jar 파일 넣기

4. 나머지 파일들은 삭제 

 

5. 아까 언급한 `AUTO_SERVER=TRUE;` 를 path에 잘 넣고, 아래에 Test Connection 버튼 누르면 연결 완료!

처음 Test Connecton 버튼 누르면 드라이버 다운로드 창이 하나 뜨는데,  그냥 다운로드 한다고 하고 넘어가면 된다. 

 

5. 연결 끝~!

DB 커넥션 이름이 TRUE 라고 나오는데 왜 그러는지 이유는 모르겠다. 그냥 이건 이름 변경해서 사용중!

 

 

 

참고 : https://stackoverflow.com/questions/79404050/error-connecting-to-embedded-db-with-dbeaver