인프런에서 김영한 강사님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 듣다가 H2 DB 연결 부분에서 오류가 발생했다.
Caused by: org.h2.mvstore.MVStoreException: The file is locked: C:/Users/user/test.mv.db [2.1.214/7]
검색해보니 application.properties
파일에 datasource url을 지정할 때 TCP 연결 설정을 하지 않아서 문제가 있었다는 것을 알게 되었다. 그래서 아래와 같이 파일 내용을 수정해보았다.
spring.datasource.url = jdbc:h2:tcp:~/test
spring.datasource.driver-class-name=org.h2.Driver
그러자 더 이상한 오류가 발생했다.😱
Caused by: java.net.UnknownHostException: �˷��� ȣ��Ʈ�� �����ϴ� (~)
설정부분에서 내가 빠트린 내용이 있는지 확인하기 위해 강의를 다시 돌려보니 H2 DB에 접속할 때 파일명을 사용하면 충돌이 발생할 수 있기 때문에 소켓으로 접속하기 위해서 아래와 같이 설정해 줘야한다고 설명하신 내용이 있었다.
spring.datasource.url = jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
파일을 수정하고 다시 프로젝트를 실행해보니 이번엔 아래와 같은 오류가 발생하였다.
org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password
Spring Boot 2.4 이후에는 spring.datasource.username을 properties 파일에 추가해야 한다는 것을 알게되었다.
spring.datasource.url = jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
파일을 수정한 이후에는 H2 DB와 잘 연결되어 오류없이 동작함을 확인하였다.
참고
https://www.inflearn.com/questions/94189/wrong-user-name-or-password
https://workshop-6349.tistory.com/entry/%EC%9C%84%EB%8C%80%ED%95%9C-%EC%82%BD%EC%A7%88-H2-database-file-is-locked