728x90
ERROR 내용
application.yml에 아래 내용대로 했는데 h2에서 테이블이 생성되지 않았다.
spring:
application:
name: user-service
h2:
console:
enabled: true # console 사용하겠다
settings:
web-allow-others: true # 외부접속허용하겠다.
path: /h2-console # 접속하고자 하는 웹브라우저의 h2콘솔 주소
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testDB
해결
해결 방법을 찾아보니
방법1) 들여쓰기를 잘해라
아래를 참고하여 들여쓰기를 해보자..
spring:
application:
name: user-service
h2:
console:
enabled: true
settings:
web-allow-others: true
path: /h2-console
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testDB
방법2) url을 jdbc:h2:mem:testDB 이렇게 써라
application.yml 파일의 url부분을
url: jdbc:h2:mem/testdb
이게 아니라
url: jdbc:h2:mem:testdb
로 변경해서 사용해라.
jdbc:h2:mem:testdb로 사용하면 Spring Boot에서 시스템 메모리로 testdb를 사용하게 됩니다. order-service 인스턴스가 2개 실행하기 위해서는 서로 다른 각각의 DB를 order-service에서 실행되어야 하며, 이 경우 2개의 서로 다른 testdb가 존재하게 되고, 데이터도 서로 공유되지 않습니다. 데이터 동기화 부분에서는 서로 다른 DB가 아니라, 데이터를 공유하기 위해 서버모드 또는 Mysql(Mariadb)를 사용하고 있습니다.
jdbc:h2:mem/testdb 로 설정하면, 메모리 DB가 아닌, 물리적인 데이터 파일을 2개의 인스턴스에서 공유하는 설정이 되어 버려서, 서버모드로 실행하라는 오류가 발생하게 됩니다.
라고 한다...
방법 3) application.yml 파일에 이걸 추가해라..
spring.datasource.username=sa
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = none
나는 전부 다 되지 않았다...😥
그래서 알아낸 방법은 이것이다.
방법 4) ddl-auto: create로 변경
방법 3)에서는 ddl-auto: none이 해결 방법으로 되어 있었는데
이걸 create로 바꿔서 했더니 됐다.
💡 ddl-auto
Data Definition Language(DDL) 자동 생성
데이터베이스 스키마 생성에 관련된 설정
💡 ddl-auto: create
create는 애플리케이션이 시작될 때 Hibernate가 데이터베이스의 테이블을 생성하도록 지시한다.
아마 다른 분들은 create로 한 다음에 또 다시 create하기 싫어서 none으로 바꾼 것이 아닐까 추측해본다..
ddl-auto: create # 테이블 생성할 것인지
전체 코드 보기
더보기
spring:
application:
name: user-service
h2:
console:
enabled: true # console 사용하겠다
settings:
web-allow-others: true # 외부접속허용하겠다.
path: /h2-console # 접속하고자 하는 웹브라우저의 h2콘솔 주소
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testDB
# data-username: sa
# data-password:
jpa:
hibernate:
ddl-auto: create # 데이블 생성할 것인지
show-sql: true # 콘솔에 출력할 것인지
짜잔 테이블 생성 완료..!