Backend/DB

[MySQL, JPA] Schema-validation: missing column [컬럼명] in table [테이블명]

Emil :) 2023. 10. 26. 22:17
728x90
반응형

목차

문제 사항


JPA + MySQL 환경에서 작업을 진행하는 도중, 다음과 같은 에러가 발생했다.

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed;
nested exception is javax.persistence.PersistenceException:
[PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing column [created_at] in table [board]

board 테이블 안에 created_at  컬럼이 없어서 발생한다는데, Entity와 테이블 모두 정상적으로 작성되어있었다.

그런데 왜 이게 발생하느냐...

원인 분석


먼저, application.yml 파일을 열어서 hibernate 관련 이슈인가 확인해봤다.

hibernate의 ddl-auto의 validate 옵션이 있는데
이는 서버를 기동할 때 사용자가 세팅한 entity와 실제 테이블이 유효하는지 검증하는 작업이다.

이 때, 대문자로 테이블과 컬럼을 탐색하기 때문에 MySQL엔 소문자로 저장되어있어도 못찾는다고 뜨는 것. 

해결 방법


MySQL 설정 바꾸기


my.cnf 파일을 바꿔야 한다.

나는 해당 파일이 없어서 애를먹었는데.. 아무리 찾아봐도 없고 없으면 복사해서 쓰라는 파일조차도 없어서..
결국 DB를 지우고 설치할 때 해당 옵션을 줘서 설치했다..;

lower_case_table_names=1;

 my.cnf 파일이 있으신 분들은 저 설정값만 바꿔주면 된다고 하니 참고하도록 하자..

바꾸는 방법은 다른 블로그들이 훨씬 잘 정리되어있다.

참고


https://blog.goodgods.com/739

 

my.cnf

오라클의 pfile과 같다고 생각하였다. 1. my.cnf 파일 없다면 데이터 베이스는 올라올까? 테스트 결과 my.cnf가 없어도 디비는 올라왔다. 오라클에서는 pfile 또는 spfile이 반드시 존재해야하는 반면에 m

blog.goodgods.com

https://devkyu.tistory.com/715

 

[mysql] my.cnf 파일이 없을 경우엔,

$ find ./ -name my-default.cnf$ sudo cp [my-default.cnf path] /etc/my.cnf 설치할때 default로 설치되어 있는 파일을 /etc/의 위치에 복사해서 사용하면 된다. Ref : http://find ./ -name my-default.cnf

devkyu.tistory.com

구독 및 하트는 정보 포스팅 제작에 큰 힘이됩니다♡

 

728x90
반응형