프로젝트를 수정하는 도중 새로운 jpa 엔티티를 추가해서 진행하고 있었는데 ddl-auto: create으로 테이블을 생성해보니 org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL 이라는 에러가 발생했다. 분명 h2 디비도 잘 돌아가고 있었는데 왜 ddl 구문에서 에러가 발생했을까?
원인은 예약어에 있었다. 밑에 사진을 보면 컬럼 중에 like 라는 컬럼이 있다. 즉 like 는 이미 mysql에 존재하는 예약어이다. 즉 이 컬럼명을 likes로 바꾸던지 prefer로 바꾸던지 해서 문제를 해결하는 것이 좋다.
즉 프로그래밍 언어에서 int를 변수명으로 선언하는 것과 비슷한 경우랄까? 혹은 assert 를 변수명으로 선언한다면? 아니면 def 를 변수명으로? 즉 키워드는 건들면 안된다.
나의 경우에는 likes로 바꾸어서 해결하였다. (@Column으로 수정하는 방법도 존재한다. )
이후에는 ddl-auto: create에서 잘 작동하는 것을 볼 수 있다.
반응형