250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JavaScript
- Eclipse
- jpa
- MSSQL
- Spring Boot
- Source
- Core Java
- 문서
- maven
- SpringBoot
- spring
- Docker
- ubuntu
- AJAX
- Exception
- Thymeleaf
- oracle
- Tomcat
- 오픈소스
- git
- 설정
- PostgreSQL
- IntelliJ
- STS
- error
- MySQL
- myBatis
- Open Source
- JDBC
- Python
Archives
- Today
- Total
헤르메스 LIFE
[Exception] Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a 본문
Exception
[Exception] Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a
헤르메스의날개 2023. 2. 26. 00:12728x90
개발환경 :
Spring Boot 2.7.9
Database : H2-2.1.214
JDK : 11.0.18 x64
JPA
H2 Database 를 이용해서, User 라는 JPA Entity 를 생성하는 테스트를 하던 중 아래와 같은 오류가 발생했습니다.
package octopus.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.Proxy;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Builder // builder를 사용할수 있게 합니다.
@Entity // jpa entity임을 알립니다.
@Getter // user 필드값의 getter를 자동으로 생성합니다.
@Setter
@NoArgsConstructor // 인자없는 생성자를 자동으로 생성합니다.
@AllArgsConstructor // 인자를 모두 갖춘 생성자를 자동으로 생성합니다.
@Table(name = "user") // 'user' 테이블과 매핑됨을 명시
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) // Post Entity에서 User와의 관계를 Json으로 변환시 오류 방지를 위한 코드
@Proxy(lazy = false)
public class User extends CommonDateEntity {
/**
*
*/
private static final long serialVersionUID = 1246865649224168898L;
@Id // pk
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long seq;
@Column(nullable = false, unique = true, length = 50)
private String user_id;
@Column(nullable = false, length = 100)
private String name;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Column(length = 100)
private String password;
}
INFO 23-02-25 23:22:415[restartedMain] org.hibernate.dialect.Dialect.<init>[175]: - HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
WARN 23-02-25 23:22:739[restartedMain] org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl.handleException[27]: - GenerationTarget encountered exception accepting command : Error executing DDL "
create table user (
seq bigint generated by default as identity,
created_at timestamp,
modified_at timestamp,
name varchar(100) not null,
password varchar(100),
user_id varchar(50) not null,
primary key (seq)
)" via JDBC Statement
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000d\000a create table [*]user (\000d\000a seq bigint generated by default as identity,\000d\000a created_at timestamp,\000d\000a modified_at timestamp,\000d\000a name varchar(100) not null,\000d\000a password varchar(100),\000d\000a user_id varchar(50) not null,\000d\000a primary key (seq)\000d\000a )"; expected "identifier"; SQL statement:
create table user (
seq bigint generated by default as identity,
created_at timestamp,
modified_at timestamp,
name varchar(100) not null,
password varchar(100),
user_id varchar(50) not null,
primary key (seq)
) [42001-214]
구글링을 많이 해봤지만, 뚜렸한 해답이 아니였습니다. 혹시 해서 User 를 Users 로 변경하니 해결되었습니다.
오히려, Users 가 더 위험 한거 아닌가 싶긴 합니다.
INFOMATION_SCHEMA에 USERS 테이블이 존재합니다. 그럼에도 일단 생성이 됩니다.
시간 날때 확인해봐야 하겠습니다.
User 를 Member 로 변경했습니다.
package octopus.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.Proxy;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Builder // builder를 사용할수 있게 합니다.
@Entity // jpa entity임을 알립니다.
@Getter // user 필드값의 getter를 자동으로 생성합니다.
@Setter
@NoArgsConstructor // 인자없는 생성자를 자동으로 생성합니다.
@AllArgsConstructor // 인자를 모두 갖춘 생성자를 자동으로 생성합니다.
@Table(name = "member") // 'user' 테이블과 매핑됨을 명시
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) // Post Entity에서 User와의 관계를 Json으로 변환시 오류 방지를 위한 코드
@Proxy(lazy = false)
public class Member extends CommonDateEntity {
/**
*
*/
private static final long serialVersionUID = 1246865649224168898L;
@Id // pk
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long seq;
@Column(nullable = false, unique = true, length = 50)
private String id;
@Column(nullable = false, length = 100)
private String name;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Column(length = 100)
private String password;
}
728x90