Coding Planet
H2 동시접속 안되는 문제 해결하기(may be already in use) 본문
반응형
아래와 같이 application.properties에서 데이터베이스 연결 설정을 했다.
# H2
spring.datasource.url=jdbc:h2:file:C:/Users/Hyeonjeong.Jeon/test/test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# create > 기존 테이블 삭제하고 자동 재성성, update 업데이트
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.SQL = debug
logging.level.org.hibernate.type.descriptor.sql = debug
하지만 이렇게 접속할 경우 어플리케이션이 실행되는 동안 H2 콘솔에 접속하지 못하는 문제가 발생했다.
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked by another process". Possible solutions: close all other connection(s); use the server mode [90020-161]
다른 애플리케이션이나 프로세스가 동일한 H2 데이터베이스에 접속하여 데이터베이스를 사용 중인 경우에는 H2 연결이 불가한 것이다.
이 문제를 해결하기 위해서는 TCP 모드로 접속해야 한다.
TCP를 사용하면 H2 데이터베이스를 클라이언트-서버 아키텍처로 활용할 수 있다. 데이터베이스 서버는 데이터베이스 파일에 액세스하고 클라리언트 애플리케이션은 데이터베이스 서버와 통신하여 데이터를 요청하고 관리할 수 있는 것이다. 이를 통해 다수의 크라이언트가 동시에 데이터베이스에 접속하여 작업할 수 있다. 각 클라이언트가 고유한 연결을 가지며 데이터베이스를 독립적으로 조작할 수 있게 된다.
1. application.properties에서 url경로를 아래와 같이 수정한다.
- jdbc:h2:tcp:// 형식
- 이 때 포트번호는 임의로 할당할 수 있다.
# H2
#url 경로 수정
spring.datasource.url=jdbc:h2:tcp://localhost:9092/~/test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=1234
2. H2 콘솔 로그인에서 url경로도 위와 같은 형식으로 수정한다.
3. 동시접속 성공!
반응형
'DB, SQL' 카테고리의 다른 글
[postgreSQL] 다중 업데이트 작업을 효율적으로 수행하는 방법 -문자열 합치기(concat), 작은 따옴표 처리 (0) | 2024.06.10 |
---|---|
[PostgreSQL] 테이블 스키마 복사하기, 데이터 복사하기 (0) | 2023.11.09 |
[SQLD] 윈도우 함수(Window Function) - 자주 사용하는 함수 모음 (0) | 2023.09.05 |
[SQLD]빈출 서브쿼리, 집합연산자, 합계 연산자 총정리(예시포함) (0) | 2023.09.05 |
[SQLD] 노랭이 87번 풀이 - START WITH...CONNECT BY PRIOR (3) | 2023.09.04 |
Comments