30강 오류
1376
작성자 없음
작성한 질문수 0
안녕하세요 선생님.
30강에서 서버를 실행시키고 책 등록을 하면 오류가 뜹니다. 그런데 application.yml 설정 중 jpa hibernate ddl-auto를 create drop으로 바꾸면 오류가 안 뜨고 책 등록이 되긴 하는데 서버를 다시 시작하면 테이블이 사라집니다. 이걸 어떻게 해야 할까요?
감사합니다.
답변 1
0
안녕하세요, 화이팅님!! 질문 올려주셔서 감사합니다!! 😊
현상 : ddl-auto를 create-drop으로 설정하면 책 등록 기능이 잘 동작한다. (다른 옵션 ex. none 이면 책 등록 기능이 동작하지 않는다) 하지만 서버를 다시 시작하면 테이블이 사라진다.
네네 맞습니다! 말씀해주신 것처럼 ddl-auto를 create-drop으로 하게 되면,
create-drop 옵션 자체가
서버가 시작될 때 테이블을 새로 만들고
서버가 종료될 때 테이블을 제거하는
원리로 동작해서, 서버를 끄시게 되면 테이블도 같이 사라지게 됩니다!!
이럴 때는 다음과 같은 방법으로 해결할 수 있습니다.
ddl-auto를 none으로 한다
아마 이렇게 하시면 에러가 나셨을 거에요! 그 에러의 원인은 서버가 데이터를 저장하려고 했는데, DB에 테이블에 없어서 그렇습니다! 따라서 테이블을 직접 만들어 주어야 합니다.
book 테이블을 DB에 만들어준다.
아마 user 테이블도 없으실테니 함께 만들어주시면 좋을 것 같아요!
create table user(
id bigint auto_increment,
name varchar(25),
age int,
primary key (id)
);
create table book(
id bigint auto_increment,
name varchar(255),
primary key (id)
);1번과 2번을 모두 잘 하시면 에러 없이 기능이 동작하고, 서버를 종료했다가 다시 시작하더라도 데이터가 남아 있을겁니다!!!
꼭 해결되셨으면 좋겠습니다! 또 안되시는 부분 있으시면 편하게 질문 올려주세요~~ 감사합니다!! 🙏🙏
0
2023-03-06 21:51:18.266 ERROR 14340 --- [nio-8080-exec-2] o.hibernate.id.enhanced.TableStructure : could not read a hi value
2023-03-06 21:51:18.267 WARN 14340 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1146, SQLState: 42S02
2023-03-06 21:51:18.267 ERROR 14340 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : Table 'library.hibernate_sequence' doesn't exist
2023-03-06 21:51:18.289 ERROR 14340 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: error performing isolated work; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: error performing isolated work] with root cause
선생님 테이블 user, book 모두 있는데 에러가 이렇게 뜹니다. 어떻게 해야 할까요...??
0
빠르게 답변 남겨주셔서 감사드립니다!!!
확인해보니 library.hibernate_sequence 테이블이 없다고 나오는데요!! 이 친구는 저희가 테이블의 PK 전략을 다르게 적용해주었을 때 사용되는 친구입니다. 즉, private Long id = null; 위에 어노테이션이 잘 달려 있는지 확인해보면 될 것 같습니다!!
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id = null;JPA Entity 객체에 위의 어노테이션이 잘 붙어 있어야 합니다 ㅎㅎㅎㅎ (startegy까지 동일해야 해요!!)
즉, 30강을 기준으로 User 객체와 Book 객체에 있는 id 에 위 어노테이션이 잘 붙어 있어야 합니다!
패키지 구분에 대해 궁금한게 있습니다
0
27
2
리액트 관련 질문이 있습니다.
0
65
2
스프링부트 버전
0
78
2
7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.
0
60
2
33강. UserLoanHistory의 관계성에 대한 질문
1
57
2
Java JDK 버전 문의의 건
0
136
2
ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.
0
90
3
h2 console 접속했을 테이블 질문
1
67
1
ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨
0
82
2
15강. updateUser() 질문
0
57
2
깃허브 질
0
86
2
여기까지 다 끝냈다고 하셨는데
0
81
2
왜안될까요
0
72
2
MySQL 창이안ㄴ뜹니다
0
59
2
포스트맨
0
53
1
spring 개념적인 질문
0
72
2
인텔리제이 샘플코드 실행 안됨 오류
0
144
2
aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다
0
88
1
마이그레이션 오류입니다.
0
176
3
Whitelabel Error Page 오류가 났습니다.
0
172
2
안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ
1
95
3
궁금한게 있습니다.
0
61
2
DTO 관련
0
71
2
궁금한게 있습니다!
0
70
2





