본문 바로가기
Error & Exception

[Gradle] Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement

by unknownomad 2022. 3. 28.

에러메시지

Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement

에러 원인

  • H2의 문법이 적용된 쿼리를 MySQL 버전으로 변경하기 위한 설정 도중 에러 발생

application.properties

  • Spring Boot ver. 2.1.9까지는 적용되는 소스
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

해결 방법

applilcation.properties 설정 변경

  • Spring Boot ver. 2.1.10 이후부터 적용되는 소스
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.datasource.hikari.jdbc-url=jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL

 

주의점

  • MySQL5Dialect 사용 시
    auto innodb 적용 X
    ver. 2.2.2 일 때도 MySQL57Dialect 사용해야 할듯
  • ver. 2.1.10 이후 직접 jdbc-url 선언 ➡ ;MODE=MYSQL가 H2주소 뒤에 붙어야 MySQL 테이블 쿼리 정상 작동됨
  • storage_engine=innodb 사용하지 않으면 MyISAM으로 쿼리 수행됨

 


출처 : https://github.com/jojoldu/freelec-springboot2-webservice/issues/67

댓글