본문 바로가기
프레임워크/Spring Boot

[Spring boot] Test H2 DB설정 에러

by 연어바케트 2022. 10. 8.
반응형

Springboot 공부중 에러를 정리한 내용

 

에러상황

Spring boot  Test를 위해서 Test용 application.properties를 만들어서 테스트 진행 

application.properties에 입력된 내용

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.h2.console.enabled=true
spring.session.store-type=jdbc

H2데이터베이스는 H2 문법을 사용하기 때문에 MySQL문법으로 바꿔주는 것을 알려주어야한다. 

그 부분이 dialect 설정하는 부분이다.  이부분까지만 설정하면 될 줄 알았다. 

 

하지만 table을 만드는데 에러가 발생하였다. 

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table <...>

 

원인

H2데이터베이스를 제대로 바라보게 설정 또한 주어야했다. 

spring.datasource.url=jdbc:h2:mem:testdb;MODE=MySQL

jdbc:h2:mem:testdb 까지만 입력해서 Test를 진행하여도 에러가 발생하였다. 

Mode가 MySQL이라는 것 까지 명시해줘야 제대로 동작하는 것을 알게 되었다. 

 

그리고 검색 중 jdbc:h2:mem:testdb와 jdbc:h2:~/testdb의 차이를 알게되었다. 

  •  jdbc:h2:mem:testdb
    In-memory DB.어플리케이션이 동작할 때에만 존재하는 DB로 DB를 연결하고 닫으면 해당 DB는 사라진다. 
  • jdbc:h2:~/testdb
    Local DB. 로컬에서 홈디렉토리에 db를 생성되어 사용된다. 해당 DB는 저장되어 계속 사용할 수 있다. 

 

참고
https://velog.io/@jeong-god/Springboot-Test-H2-DB설정
반응형

댓글