인프런 커뮤니티 질문&답변
h2에서 @GeneratedValue(strategy = GenerationType.IDENTITY) 부분이 되지 않습니다.
작성
·
391
2



강사님과 똑같이 했는데 h2에서 member 테이블이 사라지고 결과 값엔 Table "MEMBER" not found; SQL statement
라고 나옵니다. 그래서 테이블 생성을 위해 @Table(name = "Member")로 생성을 시도했지만 생성 또한 되지 않습니다.
제가 원하는건 강사님과 똑같은 결과 값이 나오게 하려면 어떤 부분을 수정해야할까요?
답변 3
0
저 똑같은 오류를 겪었는데,
h2에서
CREATE TABLE MEMBER (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
이거 입력해주고 실행해서 Member 테이블 다시 만들어준 다음에, 인텔리제이 실행하니까 되더라구요!
어떠한 오류로 인해 DB에 member 테이블이 없어서 생긴 오류라 다시 직접 만들어주니까 해결됐씁니다!
0
안녕하세요, 인프런 AI 인턴입니다. 주현님.
오류 설명을 보니 @GeneratedValue(strategy = GenerationType.IDENTITY) 전략을 사용할 때 H2 데이터베이스에서 테이블을 찾지 못하는 문제가 발생한 듯합니다.
이러한 문제는 드물게 데이터베이스의 버전이나 기본 설정 때문에 발생할 수 있습니다. 특히, h2 데이터베이스의 경우, 특수한 설정이 필요할 수 있습니다.
다음은 이 문제를 해결하기 위한 몇 가지 방법입니다:
H2 데이터베이스 버전 확인 및 설정 변경:
- 종종 H2의 특정 버전에서 호환성 문제가 발생합니다. 일반적으로 사용되는 버전은
1.4.200입니다. 최신 버전을 사용하고 계신다면, 이 버전으로 변경해보세요.
- JDBC URL에
;MODE=LEGACY옵션을 추가해보십시오. 이는 충돌을 줄이고 호환성을 높여줍니다.
- 예:
jdbc:h2:tcp://localhost/~/test;MODE=LEGACY
- 종종 H2의 특정 버전에서 호환성 문제가 발생합니다. 일반적으로 사용되는 버전은
Persistence 설정 변경:
hibernate.hbm2ddl.auto설정을 확인해 보세요. 이 값을"create"로 설정하면, 매번 애플리케이션을 실행할 때마다 테이블이 새로 생성됩니다."update"로 설정하여, 기존 테이블에 대한 변경만 허용하도록 할 수도 있습니다.
IDENTITY 전략 확인:
- IDENTITY 전략은 데이터베이스의 설정에 따라 다르게 동작할 수 있기 때문에, H2와의 호환성 체크가 필요합니다. 이 전략에서는 기본 키가 삽입 전에는 식별되지 않으며 이는 일부 설정에서 문제를 일으킬 수 있습니다.
- IDENTITY 전략은 데이터베이스의 설정에 따라 다르게 동작할 수 있기 때문에, H2와의 호환성 체크가 필요합니다. 이 전략에서는 기본 키가 삽입 전에는 식별되지 않으며 이는 일부 설정에서 문제를 일으킬 수 있습니다.
이미지 속 XML 설정 및 코드 스니펫을 기반으로 한 해결 단계는 다음과 같습니다:
persistence.xml설정에서 해당 하이버네이트 옵션 (hibernate.hbm2ddl.auto)과 JDBC URL 옵션을 수정한 후, 다시 애플리케이션을 실행해 보십시오.
이 문제와 유사한 질문에 대한 답변이 이미 제공되어 있습니다. 그래서 아래의 링크들을 참고하여 유사한 문제를 해결하는 방법을 확인하실 수 있습니다:
이 외에 궁금한 사항이 있으시다면 추가로 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






콘솔창에는 제대로 뜨는거 같은데 h2에는 왜 반영이 안될까요?