IT/디버깅

[디버깅] Database may be already in use 에러 해결

happy_life 2023. 3. 26. 18:25

이번 시간에는 h2 DB를 스프링부트 프로젝트에서 연결하던 중 발생한 오류인 Database may be already in use를 해결하는 과정을 포스팅하려고 합니다.  에러는 아래와 같습니다. 저는 기존에 다른 프로젝트에서 이미 H2를 사용하는 상태였고 url만 다르게 변경하여 프로젝트를 하려고 하니 아래와 같은 에러가 발생한 것이었습니다. 

 

에러 사진

 

 

1. Database may be already in use 해결 방법 1

구글링을 하던 중 이미 Port를 사용 중일 수도 있다는 것을 알게 되어 Window의 명령어 키를 통해 실제로 포트가 사용되고 있는지를 체크해보았습니다. (나는 껐다고 생각했는데 포트가 이미 실행중인 경우도 존재하기에)

 

Window에서 netstat -an으로 사용중인 포트를 확인할 수 있습니다.

8082 포트가 사용중인 사진

 

위의 사진을 보면 실제로 포트를 사용하지 않는다고 생각했음에도 불구하고 이미 Listening으로 포트가 사용되고 있음을 알 수 있었습니다. 이제 이 포트를 강제 종료하고 다시 실행하려고 합니다. 

netstat -ano | findstr :포트번호 < -- 명령어를 사용해 이 포트를 사용중인 프로세스 번호 6396을 알아내었고 이 프로세스를 Kill하려고 합니다.

포트가 열려있는 것을 삭제하고 다시 실행

 

하지만 이렇게 했음에도 불구하고 문제를 해결하지 못하였습니다.

 

 

2. Database may be already in use 해결 방법 2

url을 아래와 같이 변경 후 문제를 해결하였습니다. 현재 Localhost:8082 포트를 사용하고 있었는데 localhost url을 입력하지 않았기 때문에 발생한 문제였습니다. jdbc:h2:tcp://localhost/~/devpool 는 제가 localhost의 TCP server과 connection을 사용한다는 의미였습니다. 

url 변경