Closed benny-coding closed 4 years ago
@benny-coding 님 질문 감사합니다! 제가봤을때는 스프링부트 버전이 2.1.9가 되면서 기존에 사용중이던 MySQL5InnoDBDialect 이 Deprecated가 된것으로 보입니다.
다만 제가 적용해본 결과
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
로 하시면 2.1.9까지는 정상작동되며
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
아무래도 불편한점이 많다보니 2.1.9에서 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect 를 사용하는것을 추천드립니다.
storage_engine=innodb 를 사용하지 않으면 MyISAM으로 쿼리가 수행됩니다. 자세한 것은 별도 코멘트를 참고해주세요.
2.1.10이후의 설정방법은 별도로 블로그에 정리해서 공유드리겠습니다 :)
와 친절하신 답변 정말 감사 드립니다~!! 말씀 주신대로 해보도록 하겠습니다! ㅎㅎ
넵넵 :) 안되시며 편하게 말씀주세요!
스프링부트 2.2.2 에서 아래와 같이 2개만 추가해줘도 실행 잘되네요
전 yml로 적용했습니다.
jpa:
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
datasource:
hikari:
jdbc-url: jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL
오해하시는 분들이 많아서 추가로 storage_engine에 대한 답변도 함께 남겨놓습니다 :)
https://github.com/jojoldu/freelec-springboot2-webservice/issues/158#issuecomment-582759510
freezboi 님꺼 그대로 해보니 실행은 되는데 쿼리문이 안나와서 수정해봤습니다. application.yml 로 생성하심 됩니다.
spring:
jpa:
show_sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
storage_engine: innodb
datasource:
hikari:
jdbc-url: jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL
2.2.6 에서 해봤습니다.
2.3.1에서 올려 주신 프로퍼티스 잘 동작합니다 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.properties.hibernate.dialect.storage_engine=innodb spring.datasource.hikari.jdbc-url=jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL
스프링부터 버전이 '2.1.7' 에서 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect에 대해 Deprecated가 발생하여 '2.1.9' 로 변경했지만 여전히 Deprecated가 발생합니다. 위에서 말씀하신 내용은 적용시켜 봤지만 여전히 동작하지 않습니다. show_sql에서는 정상적으로 쿼리가 출력되지만 MySQL57Dialect에서도 출력되지 않습니다..
@jhyeon89 h2 database 버전을 1.4.199로 낮춰보세요!
현재 MySQL5InnoDBDialect
, MySQL57InnoDBDialect
모두 참조 안하는 듯하네요.
다음과 같이 application.yaml 를 만들어줘서 해결했습니다. 도움이 될까 싶어서 공유합니다.
spring boot version은 2.2.6
입니다.
spring:
jpa:
show_sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL57Dialect
datasource:
hikari:
jdbc-url: jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL
Spring Boot 2.4.0 쓰는데 위에 방식 다 안되네요. 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 이걸로 했는데도 안되네요 ㅠㅠ
application.yml로 변경해서 해도 안되네요. 실습 진행이 안되니깐 답답하네요. spring: jpa: show_sql: true properties: hibernate: dialect: org.hibernate.dialect.MySQL5InnoDBDialect storage_engine: innodb datasource: hikari: jdbc-url: jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL
@midi79 application.yaml 에서 제 것과 똑같이 해도 안되는 건가요? 써주신 application.yaml에서는 MySQL5InnoDBDialect
로 되어 있는데, MySQL57Dialect
이면 어떨지 생각이 들어서요 👀
@midi79 application.yaml 에서 제 것과 똑같이 해도 안되는 건가요? 써주신 application.yaml에서는
MySQL5InnoDBDialect
로 되어 있는데,MySQL57Dialect
이면 어떨지 생각이 들어서요 👀
위에 문제가 아니였구요, Post 인데 예제가 Put으로 되어 있어서 발생한 에러였네요.....에휴...ㅠㅠㅠ https://taeil00.tistory.com/936
덕분에 해결하고 갑니다 감사합니다
@bossm0n5t3r 솔루션 감사합니다!
스프링부트 버전이 2.1.9까지만 이었군요 2.4.1 버전 사용중인데 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
이 설정을 적용하니 정상실행 됩니다. 감사합니다!
jpa: show_sql: true properties: hibernate: dialect: org.hibernate.dialect.MySQL57Dialect datasource: hikari: jdbc-url: jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL
스프링부트2.5.0 이렇게 하니 잘됩니다. 혹시 OracleDB사용하고 싶으면 어떻게 해야하나요..?
spring:
jpa:
show_sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.Oracle10gDialect
datasource:
hikari:
jdbc-url: jdbc:oracle:thin:@localhost:1521/xe
driver-class-name: oracle.jdbc.driver.OracleDriver
username: [DBID]
password: [DBPW]
로 해봤는데 테이블을 못찾는거보니 Create가 안되는거 같습니다..
추가적으로 properties 에
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
설정 시 책 내용 대로 h2-console 연결 시
"Database "mem:testdb" not found, either pre-reate it or allow remote database creation (not recommended in secure environments) [90149-214] 90149/90149 (Help) "
오류가 뜨는데 JDBC URL에 jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL 입력하면 연결 가능하니 참고 바랍니다.
혹시 버전이 저와 같은 분들은 참고바랍니다~ Spring Boot Version: 3.2.2 hibernate Version: 6.4.1 h2 Version: 2.2.224
hibernate 6 부터는 버전에 따른 dialect가 deprecated되서 스탠다드 버전인 org.hibernate.dialect.MySQLDialect 를 사용해야 합니다.
spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect spring.jpa.properties.hibernate.dialect.storage_engine=innodb spring.datasource.hikari.jdbc-url=jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL spring.h2.console.enabled=true
@ericbyeric 너무 감사합니다ㅠㅠ 혼자 공부하던 중 계속 java.lang.IllegalStateException 오류가 떠서 진도를 못 나가고 있었습니다. 덕분에 해결했습니다!
안녕하세요~ 조졸두님 책으로 공부하고 있는 베니라고 합니다!
100 페이지에서
application.properties
에MySQL5InnoDBDialect
추가 시 밑에 이미지와 같이 나오고 있습니다!그리고 해당 클래스를 보면
위와 같이 나오고 있어
properties
에hibernate.dialect.storage_engine=innodb
를 추가했는데 그림 3-12처럼id bigint not null auto_increment
가 나오지 않습니다.. ㅜㅜ혹시 어떤 것이 문제인지 예상이 가능하신가요...?
현재 저의
build.gradle
내용도 전달 드립니다!