• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

DB관련

24.04.14 21:51 작성 조회수 169

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요

여기서 import org.springframework.jdbc.datasource.DataSourceUtils;

jdbc부분에 빨간줄이 생겨서 다른질문자분들이 올려주신걸 보고 어찌어찌 해결했습니다. 그런데 HelloSpringApplication을 실행할때마다 회원목록이 비어있습니다. 그리고 회원등록을 하고나서 sql문을 날리면 DB에 들어간 회원이 없습니다..

어디가 연결이 잘못된건지 잘 모르겠네요..

 

 

그리고 H2 실행할때 다음실행부터는 저 url부분에

jdbc:h2:tcp://localhost/~/test

이런식으로 넣어서 들어가라고 하셨는데 그러면 오류가 납니다.. 저 스크린샷처럼 들어가야 연결이 되는데 application.properties에 어떤 url을 써야 하나요?

 

답변 3

·

답변을 작성해보세요.

2

OMG님의 프로필

OMG

2024.04.14

프로젝트 코드 확인해보았습니다.

다음 내용을 수정해보시고, 해결이 안될 경우 댓글남겨주세요.

 

(1)application.properties 파일

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

.

(2)SpringConfig 클래스

수정전)

return new MemberService(new MemoryMemberRepository());

수정후)

return new MemberService(memberRepository());

 

(3) JdbcMemberRepository 클래스

수정전) 29번째 줄

conn = pstmt.getConnection();

수정후)

conn = getConnection();
cksgur님의 프로필

cksgur

질문자

2024.04.14

imageh2콘솔에서 jdbc:h2:tcp://localhost/~/test 이렇게 입력하면 위에 메세지가 뜹니다.

그리고 HelloSpringApplication실행후 localhost창에 들어간 다음 회원목록 창을 누르면

image이런식으로 뜨네요

OMG님의 프로필

OMG

2024.04.14

https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.3ryn0qha48vi

(1) 해당 링크의 해결방안2를 참고하여 test.mv.db파일을 C:\USERS\계정명 폴더에 생성해주세요.

그리고 h2 를 실행한 후

 

image

(2) h2에서도 동일하게 application.properties의 URL을 적용해주세요.

(3) 강의를 참고하여 ddl.SQL 파일의 내용을 h2 콘솔에 작성해서 MEMBER 테이블을 생성해주세요

.

중간에 막히는 부분이 있다면 댓글 남겨주신 것처럼 캡쳐화면을 제공해주시면 추가적인 도움 드리도록하겠습니다.

cksgur님의 프로필

cksgur

질문자

2024.04.14

맥을 사용중인데 맥은 test.mv.db를 어디에 위치시켜야 하는지 알 수 있을까요?

OMG님의 프로필

OMG

2024.04.14

아, 맥을 사용중이시군요.

터미널을 열었을 때의 기본 경로입니다.

Users/계정명 여기에서 진행하시면 되고, 명령어 한개만 입력해주세요.

touch test.mv.db

그리고 h2를 열어서 확인해주세요

cksgur님의 프로필

cksgur

질문자

2024.04.14

https://drive.google.com/drive/folders/1K5KRTOmuPST5bLoUpSfJe4yoAXUrB3zo?usp=sharing

 

알려주신 방식대로 h2콘솔 열고 주소 복사해서 넣으면 똑같이 connection is broken이 뜨고 url입력부분이 알아서 처음url로 돌아갑니다..

그리고 HelloSpringApplication 실행 후localhost창 들어가면 회원등록 무르면

image이렇게 뜹니다..

OMG님의 프로필

OMG

2024.04.15

추가로 올리신 코드를 실행했을 때 정상 실행되는것으로 보아 문제가 없는 것 같습니다.

기타 환경 문제로 예상이 되는데요. 다음 링크를 보시면

https://velog.io/@adorableco/Springh2-Mac-M1-Connection-refused-by-localhost-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0

맥을 사용하는 점과 오류 메시지가 동일한 것으로 확인됩니다.

확인해보시겠어요?

해결이 안될 경우 h2를 설치하신 경로를 댓글 남겨주세요.

.

추가로 ,오류 메시지 전문을 확인해봐야 할 것 같습니다.

 

에러메시지 전체를 복사해서 댓글로 남겨주시겠어요?

전체 복사-붙여넣기가 길이제한으로 불가하다면

인텔리제이 콘솔창을 클릭한 후 exception을 검색(command+f)하면 몇몇 개가 검색이 될텐데요.

그 부분을 중점으로 남겨주시겠어요?

오류 메시지에서 중요한 부분은 어떤 Exception이 발생했는지와

caused by ~ 로 어떤 원인에 의해 발생했는지 입니다. 이 부분을 확인할 예정이므로 이 부분을 중점으로 남겨주시면 확인에 도움이 될 것 같습니다.

image

cksgur님의 프로필

cksgur

질문자

2024.04.15

m1맥인데 터미널에서 h2 -web이 아니라 ```bash h2 -tcp -web -pg ``` 이런식으로 입력하니까 db에 잘 저장되고 localhost창에서 회원목록도 잘 보입니디.. 감사합니다ㅠㅠ

0

OMG님의 프로필

OMG

2024.04.14

안녕하세요. cksgur님, 공식 서포터즈 OMG입니다.

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

OMG님의 프로필

OMG

2024.04.14

image링크 있는 사용자가 열어볼 수 있도록 권한 부여를 확인해주세요

OMG님의 프로필

OMG

2024.04.14

허용은 됐는데, 확인 가능한 코드가 없네요

image

image

시작 프로젝트 코드만 올린게 맞을까요?

cksgur님의 프로필

cksgur

질문자

2024.04.14

https://drive.google.com/file/d/1fnVwHy5Qc3zPjRO4uA8C6YaXbqjqTcOZ/view?usp=drive_link

 

제대로 압축하고 올린 것 같은데 죄송합니다..

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.14

안녕하세요, 인프런 AI 인턴입니다.

cksgur 님, JDBC 설정 및 H2 데이터베이스 연결 문제로 곤란을 겪고 계신 것 같습니다. 첫 번째 이미지에서 언급하신 org.springframework.jdbc.datasource.DataSourceUtils 관련 이슈 해결을 축하드립니다. 다음으로, 회원 등록 후 데이터베이스에 데이터가 보이지 않는 문제와, JDBC URL 설정 관련하여 어떻게 해야 할지 고민이시군요.

데이터가 데이터베이스에 보이지 않는 경우, 아마도 어플리케이션과 데이터베이스 간의 연결 설정에 문제가 있을 수 있습니다. 그리고 H2 데이터베이스를 처음 실행할 때와 이후 연결 설정 구성에 차이가 있을 수 있음을 주목해야 합니다.

H2 데이터베이스 JDBC URL 설정

H2 데이터베이스를 사용할 때, 처음 실행할 때는 jdbc:h2:~/test와 같은 형식을 사용하여 데이터베이스 파일을 생성합니다. 이후 데이터베이스에 접근할 때는 서버 모드를 사용하는 경우가 많으므로, 이때는 jdbc:h2:tcp://localhost/~/test와 같이 접근 URL을 변경해야 합니다.

회원 데이터가 데이터베이스에 보이지 않는 문제는 여러 원인에 의해 발생할 수 있습니다. application.properties 파일의 데이터베이스 URL 설정, 데이터베이스 접근 권한, 트랜잭션 설정 등 다양한 설정을 점검해야 할 필요가 있습니다.

관련 질문 링크

여기에 몇 가지 유사한 질문에 대한 답변 링크를 제공합니다. 이들 링크를 통해 cksgur 님의 문제를 해결하는 데 도움이 될 수 있습니다:

  • h2데이터베이스에서 JDBC URL 연결

    • 이 질문에서는 H2 데이터베이스를 처음 설정하고 서버 모드로 전환할 때 발생할 수 있는 연결 문제에 대한 해결 방안을 제공합니다.
  • H2 연결시 JDBC URL

    • 여기서는 JDBC URL에 대한 초기 설정 이후 서버 모드로 접근할 때 마주칠 수 있는 문제와 그 해결책에 관해 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.