[Spring] Jdbc Connection Error 해결

만두·2024년 3월 20일

현재 인프런에서 김영한님의 Spring 강의를 듣고 있는 중이다.
무료로 풀려 있는 스프링 입문 강의 내의 스프링 순수 JDBC 부분의 강의를 듣는데 오류가 발생했다.


> org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction

JDBC랑 연결이 되지 않는다고 해서 h2 데이터베이스 연결을 다시 확인했고, 그 과정에서 오류를 해결할 수 있었다. 물론 여러 번의 시행착오가 있었다.

1. h2 다시 연결

연결을 끊고 다시 들어갔지만 여전히 되지 않았다.

2. h2 삭제 후 강의에 나온 버전인 1.4200으로 재설치

멍청하게도 버전 설명을 제대로 안봤다. 스프링 3부터는 2.1.214 버전 이상을 사용해야 한다.

3. build.gradle 파일 확인

gradle에는 정상적으로 jdbc, h2 데이터베이스 관련 라이브러리를 추가해두었었다.

    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	runtimeOnly 'com.h2database:h2'

4. application.properties에 데이터베이스 연결 설정 확인

정답은 여기였다!!
resources/application.properties 부분에 들어가보니 한 줄을 빼먹은게 있었다. 바로 h2 데이터베이스 실행 시키면 열리는 웹 브라우저를 보면

이런식으로 JDBC URL과 사용자명이 적히는데 이걸 보고 연결 설정을 추가해줘야한다. 나는 username을 적지 않아서 연결이 실패된 것이었다.

spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa

그렇다. spring.datasource.username=sa 이 한줄이 없어서 데이터베이스 연결 실패 오류가 떴던 것이다. 이 한 줄을 추가해주고 난 뒤로 실행시키니 잘 작동되었다.

그래도 오류를 발견해서 다행이다.


번외

스프링에서 계속 실행시키다보면 gradle 관련 오류가 자주 발생한다.

Execution failed for task ':test'. > A problem occurred starting process 'Gradle Test Executor 2'

이런식의 오류가 발생한다면

./gradlew --stop

이 명령어를 실행해 주어서 현재 실행되고 있는 process 를 종료시켜준다.
Stopping Daemon(s)
2 Daemons stopped
나는 2개의 Daemons가 실행되고 있었나보다.


Cannot lock file hash cache (/Users/ieunseo/Desktop/coding/spring/hello-spring/.gradle/8.6/fileHashes) as it has already been locked by this process

나는 file hash cache가 자주 발생하는데, 사실 왜이러는지도 모르겠고 지식도 얄팍한 현재 시점에서 내가 해줄 수 있는 건 gradle project reload밖에 없었다... 그래서 프로젝트를 다시 로드해주면 되는 것 같았다.


Could not create service of type FileHasher using
GradleUserHomeScopeServices.createCachingFileHasher()

이런 오류가 뜰 때도 있었는데

./gradlew --status

를 해서 실행되고 있는 프로세스들을 kill 3573 이런식으로 프로세스 아이디를 입력하여 kill해준 다음 다시 ./gradlew clean, ./gradlew build clean을 해주었다.

./gradlew clean
./gradlew build clean

다음에 더 자세히 알게되면 수정하겠다.

profile
아무것도 모르는 말하는 감자 입니다

0개의 댓글