프로젝트 진행중 entity를 생성하고, hibernate의 ddl 옵션을 이용하여 테이블을 생성해보았다.
그러나 (GenerationTarget encountered exception accepting command : Error executing DDL), (org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL), (Caused by: java.sql.SQLSyntaxErrorException: Table 'file.file_version' doesn't exist) 해당에러들이 발생했다.
신기한것은 에러가 발생했음에도 워커벤티상 테이블은 생성이 되었다.
그럼 이제 원인을 알아보고, 해결해보겠다.
구글링을 해보니까 DB예약어를 쓴 경우일 수 있다고 해서 엔티티를 자세히 봤는데 예약어를 사용한 적은 없었다.
나는 현재 aws rds로 mysql 8.0이상의 버전을 사용중이다. 찾아보니 rds는 자동으로 lower_case_table_name을 1로 설정해준다. 따라서 대소문자도 원인이 아니었다.
참고:
lower_case_table_names 값이 0이라면 테이블명의 대소문자를 구별
lower_case_table_names 값이 1이라면 테이블명의 대소문자를 구별하지 않음.
Error executing DDL "alter table user drop foreign key 이 오류는 alter할 테이블을 찾지 못하여 나타나는 에러이다. 따라서 초기화 옵션을 update로 변경하면 에러가 해결된다.
3번방식으로 문제를 해결하기 위해 ddl-auto를 update로 변경하여 어플리케이션을 실행했다.
ddl-auto 옵션은 update로 설정하니 문제없이 테이블이 생성되었다.