[Trouble Shooting] Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement 해결

k·2024년 2월 7일
0

Trouble Shooting

목록 보기
1/3

발생한 이유

SpringBoot에서 Entity를 생성하던 중 오류가 발생했다.

@Entity
@Table(name = "USER", indexes = {
	@Index(name="idx_userid_username", columnList = "u_id, u_name", unique= true),
	@Index(name="idx_username", columnNames="u_name")
})
class User{
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Integer id;
    
    @Column(name = "u_id", nullable = false, unique = true, length = 255)
  	String userId;
    
    @Column(name = "u_pw", nullable = false, length = 255)
    String userPw;
    
    @Column(name = "u_name", nullable = false, length = 255)
    String userName;
}

를 만들고 어플리케이션 실행을 했더니

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "create table [*]user (id integer generated by default as identity, u_id varchar(255) not null, u_name varchar(255) not null, u_pw varchar(255) not null, primary key (id))"; expected "identifier"; SQL statement:

라는 오류 문구가 뜨면서 실행이 되지않았다.

처음에는 조금 당황했지만, 비슷한 오류에 대해서 찾아본 결과 user라는 이름이 sql 상에서 예약어로 사용되어서 생긴 오류였다.

즉, 테이블 이름을 다른 이름으로 지정하면 간단하게 해결 할 수 있다.

해결법

@Entity
@Table(name = "USERS", indexes = {
	@Index(name="idx_userid_username", columnList = "u_id, u_name", unique= true),
	@Index(name="idx_username", columnNames="u_name")
})

@Table 어노테이션 내에 테이블이름을 지정할 수 있는 name에 이름을 USERS로 변경하면 간단하게 해결할 수 있는 문제였다.

profile
You must do the things you think you cannot do

0개의 댓글