인프런에서 스프링 입문 강좌를 수강하며 실습하던 중, H2를 스프링과 연결하는 과정에서 발생한 오류이다.
분명히 강좌에서 나온대로 따라 했는데 오류가 났고...(ㅠㅠ) 구글링을 해도 마땅한 해결 방법이 나오지 않아 더더욱 당황스러웠던 것 같다.
혹시 나와 같은 문제를 겪는 사람이 있다면 도움이 될까해서 작성한다.
문제 배경
- 강의 중 순수 JDBC 챕터를 듣던 과정에서 발생한 문제이다.
- H2 DB를 스프링과 연결해 주기 위해 build.gradle, application.properties, SpringConfig 파일을 수정해주었고, JdbcMemberRepository를 MemberRepository의 구현체로 추가해주었다.
- cmd 창을 통해 h2.bat을 실행 시켰고, 이걸 통해 뜬 h2 웹 브라우저는 정상적으로 동작하며 MEMBER 테이블이 정상적으로 생성, 조회가 가능했다. (테이블 안엔 튜플이 2개 존재했음)
- 서버와 h2 를 연동시켜준 다음, 웹 페이지를 통해 회원목록을 조회하려 하니 오류가 발생함.
오류 상황
...org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" not found (this database is empty); SQL statement:
와 같은 오류 메세지가 반복적으로 출력되며 조회가 아예 불가능 했음. 추가는 말할 것도 없고...
해결 방법
<먼저 체크할 것>
- 접속 화면에서 JDBC URL 주소와 application.properties의 url 주소가 일치하는지 확인한다 (test / test2 / test1)
- application.properties 에서 아래 코드에 추가적으로 들어간 space 나 빠진 문자가 없는지 확인한다.
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
<만약 다 만족하는데도 계속 오류가 발생한다면>
1. 테이블 재생성 후 아래와 같이 application.properties 수정 (url 주소 주의) 후 다시 시도
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
2. (위의 경우에도 안된다면) test.mv.db를 삭제하고, test2.mv.db를 생성
→ 새로 테이블을 만들어주고 다시 시도
1) test.mv파일 삭제 → 새 txt 파일 생성 후 다른이름으로 저장 → 이름 test2.mv.db로 수정, 파일 형식 = 모든파일로 저장
2) cmd 창 켜서 h2.bat 다시 실행
3) 브라우저 jdbc url에 test2 로 뒷부분 수정 (jdbc:h2:tcp://localhost/~/test2) 후 재접속
4) 만약 접속한 웹 사이트의 URL의 앞부분이 ip로 뜨는 경우 localhost:~로 수정하기
5) MEMBER 테이블 생성 쿼리 날린 후 서버 리프레시 후 확인해보기
나는 1번으로도 해결되지 않아 2번까지 진행했더니 오류를 해결할 수 있었다. member 테이블 자체를 못찾는 오류이다보니 아무래도 데이터 베이스 자체에 연결 문제가 있었던 것 같다. 대체 뭐가 문제였던걸까... 밀어버리고 새로 만드니 속이 시원하군^^;;
(그와중에 url을 localhost로 수정안해서 중간에 또 한참을 헤맸다. 정신체리...)
부디 나와 같은 오류로 고통받는 사람들에게 조금이라도 도움이 되길 바라며 오늘 포스팅은 끝!
'Spring > Spring boot 입문' 카테고리의 다른 글
[스프링 부트] 스프링 DB 접근 기술(4)- 스프링 입문 강의 / 인프런 (0) | 2022.08.30 |
---|---|
[스프링 부트] 스프링 DB 접근 기술(1)~(3)- 스프링 입문 강의 / 인프런 (1) | 2022.08.28 |
[스프링 부트] 화면 웹 기능 - 스프링 입문 강의 / 인프런 (0) | 2022.08.19 |
[스프링 부트] 스프링 빈과 의존관계 - 스프링 입문 강의 / 인프런 (0) | 2022.08.05 |
[스프링 부트] 회원 관리 예제(4)~(5) - 스프링 입문 강의 / 인프런 (0) | 2022.08.03 |