지식창고
[Spring Boot] mysql 환경 설정 오류 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" already exists; SQL statement:
_DoYun
2022. 9. 5. 16:13
어느날 프로젝트를 돌려봤는데 다음과 같은 에러가 발생했습니다.
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" already exists; SQL statement:
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "MEMBER" because "SH7DBRE3E7FS2" depends on images;
위 에러에서 나오는 "MEMBER" 와 "images"는 JPA one to one 매핑한 엔티티들이었고 결과적으로 프로젝트 실행시 만들어졌던 MEMBER 테이블을 DROP 할 수 없다는 메시지를 메시지였습니다.
spring boot의 application.yml 또는 properties 파일에 해당 설정, 특히 밑줄 친 부분을 추가하면 프로젝트를 실행하는 매번마다 TABLE이 새로 생성되는 것으로 알고 있습니다. 즉 모든 기존에 있던 테이블들이 drop후 재생성 된다고 생각하시면 됩니다.
그러나 저의 경우 프로젝트를 재 실행하고 직접 MYSQL에서 확인하면 위 사진처럼 아직 데이터가 남아있었습니다. 다른 엔티티들은 문제가 없고 에러 메시지에서 나왔던 MEMBER 엔티티와 images 엔티티만 지워지지 않고 남아있었습니다.
열심히 구글링을 통해 제 jpa 데이터 플렛폼 설정에 문제가 있다는 것을 알 수 있었습니다. 혹시 테이블 재생성에서 오류가 발생한다면 해당 부분을 확인해 보시기 바랍니다.
밑줄 친 부분의 MySQL5InnoDBDialect는 제 spring 버전에서 deprecated 된 것 같았습니다.
application.properties 파일에서 해당 부분이 사진처럼 밑줄이 그어져 있는 걸 확인할 수 있었습니다. 따라서 해당 부분을 아래처럼 바꾸었더니 오류가 해결되었습니다.
database-platform: org.hibernate.dialect.MySQL57Dialect