Language/JAVA&Spring

[Spring] Error executing DDL : 테이블 생성 오류 Trouble Shooting

지과쌤 2022. 10. 24.
반응형

목차

상황

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 보며 OAuth2 관련 파트 실습 중, 아래와 같은 오류를 확인하였다.

    > org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "drop table if exists user" via JDBC Statement
    
    > Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "drop table if exists [*]user"; expected "identifier";

     

    그리고, 정상적으로 user 테이블 생성이 되지 않는것도 확인하였다.

     

    > org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table user (id bigint not null auto_increment, created_date datetime(6), modified_date datetime(6), email varchar(255) not null, name varchar(255) not null, picture varchar(255), role varchar(255) not null, primary key (id)) engine=InnoDB" via JDBC Statement
    
    > Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "create table [*]user (id bigint not null auto_increment, created_date datetime(6), modified_date datetime(6), email varchar(255) not null, name varchar(255) not null, picture varchar(255), role varchar(255) not null, primary key (id)) engine=InnoDB"; expected "identifier"; SQL statement:
    create table user (id bigint not null auto_increment, created_date datetime(6), modified_date datetime(6), email varchar(255) not null, name varchar(255) not null, picture varchar(255), role varchar(255) not null, primary key (id)) engine=InnoDB [42001-214]

     

    해결

    에러를 확인해보니, expected "identifier" 관련 문구가 눈에 띄는데 이는 특정 키워드의 unique가 보장되지 않아 생기는 문제인것같다.

     

    다시말해, 쿼리 내 테이블명, 컬럼명, 변수명 등등.. 이 중 특정 값의 unique가 보장되지 않는다는것으로 해석될 수 있는데, 위 문제에서는 "user" 키워드가 문제를 일으킨것으로 보인다.

     

    따라서 테이블명을 tblUser로 명명해주었다. (꼭 이렇게 하지 않아도 괜찮다.)

    정상적으로 테이블이 생성되었다.

    정상적으로 신규 유저 데이터가 insert 된것을 확인할 수 있다.

    반응형

    댓글

    💲 추천 글