Friday, December 7, 2018

Springboot, JPA, mysql 환경에서 @Column(unique=true) 사용시 DDL 에러 해결법

Springboot2에서 JPA를 사용 하면서 개발기간 동안은 설정파일에 [spring.jpa.hibernate.ddl-auto=create] 옵션을 두고 개발하는 사람들이 있을텐데 Entity에 @Column(unique=true)를 설정 할 경우 아래와 같은 오류를 볼 때가 가끔 있습니다.

Error executing DDL "alter table TABLE_NAME add constraint UK_eke0p6056qepc3h537i4xgban unique (COL_NAME)" via JDBC Statement

이 경우 Springboot2에서 간단하게 처리가 가능합니다. 설정파일 안에 아래의 옵션을 추가해주기만 하면 됩니다.

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

그러나, 다른 데이터베이스를 사용하는 경우에는 해당 데이터베이스에 맞는 Hibernate Dialect를 설정해야 합니다. 예를 들어 PostgreSQL을 사용한다면 "org.hibernate.dialect.PostgreSQLDialect"를 사용할 수 있습니다.

또한, 이 방법은 JPA가 자동으로 스키마를 생성/변경할 때만 적용됩니다. 이미 생성된 스키마에 대해서는 DBMS에서 직접 제약 조건을 수정해야 할 수도 있습니다. 따라서 이 점도 함께 고려하시는 것이 좋습니다.


0 개의 댓글:

Post a Comment