Unsupported connection setting "MVCC" 이슈
728x90
반응형

TL;DR

# Before
spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop;MVCC=TRUE
    
# After : MVCC=TRUE 제거
    url: jdbc:h2:tcp://localhost/~/jpashop

 

 

 

김영한 강사님의 "실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발"이라는 강의를 보다가 다음과 같은 에러를 발견하였다.

 

org.h2.jdbc.JdbcSQLNonTransientConnectionException: 
Unsupported connection setting "MVCC"

 

시키는대로 했는데 '당췌 이게 무슨일인가'했는데... 나와 비슷한 이슈를 겪은 사람들이 많은 것을 확인했다.

 

(해결완료) Unsupported connection setting "MVCC" 에러나오시는분 참고하세요 - 인프런 | 질문 & 답변

전에 1번 완강했었는데다시 반복 강의 들을때 문제생겨서 올립니다. 3시반30분의 삽질끝에..결국 찾아낸 ㅠㅠ저같은 분이 없으시길.. [사진] 이러한 에러가 나오실거에요.. [ 사진 크게 보시려면

www.inflearn.com

 

데이터베이스인 H2가 1.4.200 버전으로 업데이트하고 난 뒤 MVCC 옵션이 사라진 것이다. MVCC는 다중 버전 동시성 제어(Multi-Version Concurrency Control)라는 것인데 동시에 실행되는 트랜잭션을 최대화하면서도, 데이터 무결성이 유지되도록 하기 위함이다. 트랜잭션이 발생했을 때 버전을 생성해서 변경된 데이터를 반영한다. 장점도 있지만 버전 충돌의 리스크도 가지고 있다. (자세한 내용을 알고 싶은 분들은 아래 블로그 추천)

 

 

 

[ H2 ] Unsupported connection setting "MVCC"

H2 커넥션 도중 에러가 났다 Error 내용 com.example.demo.MemberRepositoryTest > testMember() FAILED org.springframework.dao.InvalidDataAccessApiUsageException at MemberRepositoryTest.java:23 Caused by..

gogo-jjm.tistory.com

 

그러면 H2는 MVCC의 대안으로 무엇을 사용할 것인가 찾아보니 MVStore라는 것을 쓰는 것으로 보인다. 개선된 버전관리가 가능한 것으로 보인다.

 

MVStore

  MVStore Overview Example Code Store Builder R-Tree Features - Maps - Versions - Transactions - In-Memory Performance and Usage - Pluggable Data Types - BLOB Support - R-Tree and Pluggable Map Implementations - Concurrent Operations and Caching - Log Str

www.h2database.com

 

참고자료
- http://h2-database.66688.n3.nabble.com/MVCC-problem-with-in-memory-H2-in-1-4-200-td4035993.html
- https://stackoverflow.com/questions/60373580/default-business-application-not-working-because-of-h2-db-error
- https://stackoverflow.com/questions/65208440/what-does-mv-store-false-mean-when-connecting-to-h2-database
- https://github.com/h2database/h2database/issues/1204

 

 

728x90
반응형