2016-10-19 1 views
0

나는 내 프로젝트를 시작으로 내 데이터베이스를 채우기 위해 노력하고있어 :SQL 오류 동안

  1. 봄 부팅

  2. H2 포함 된 데이터베이스를

스크립트입니다 :

INSERT INTO 'VET' VALUES (1, 'AAAA', 'BBBB'); 

여기에 자바에서 내 실체 :

@Entity 
public class Vet extends BaseClass{ 

// @Id 
// @GeneratedValue 
// private int id; 
    @NotNull(message="{NotNull}") 
    @Size(min=2,max=15,message="{Size}") 
    @Column(name = "first_name") 
    private String firstName; 

    @NotNull(message="{NotNull}") 
    @Size(min=2,max=15,message="{Size}") 
    @Column(name = "last_name") 
    private String lastName; 

    ... 
} 

@MappedSuperclass 
public class BaseClass { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

} 

나는 봄을 시작으로,이 스택 트레이스입니다 :

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "INSERT INTO 'VET'[*] VALUES (1, 'AAAA', 'BBBB')"; expected "identifier"; SQL statement: 
INSERT INTO 'VET' VALUES (1, 'AAAA', 'BBBB') [42001-192] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.message.DbException.getSyntaxError(DbException.java:205) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.command.Parser.readIdentifierWithSchema(Parser.java:3130) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.command.Parser.readTableOrView(Parser.java:5365) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.command.Parser.parseInsert(Parser.java:1053) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.command.Parser.parsePrepared(Parser.java:413) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.command.Parser.parse(Parser.java:317) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.command.Parser.parse(Parser.java:289) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.command.Parser.prepareCommand(Parser.java:254) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.engine.Session.prepareLocal(Session.java:560) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.engine.Session.prepareCommand(Session.java:501) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1202) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:170) ~[h2-1.4.192.jar:1.4.192] 
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:158) ~[h2-1.4.192.jar:1.4.192] 
    at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:473) ~[spring-jdbc-4.2.7.RELEASE.jar:4.2.7.RELEASE] 
    ... 67 common frames omitted 

물론 스크립트의 이름 data.sql이고 그것의 위치 resources 폴더에있는 경우 스택 추적에 따라 스크립트를 분명히 읽는 것입니다.

INSERT INTO VET('id', 'first_name', 'last_name') VALUES (1, 'AAAA', 'BBBB'); 

그 오류의

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "INSERT INTO VET('id'[*], 'first_name', 'last_name') VALUES (1, 'AAAA', 'BBBB')"; expected "identifier"; SQL statement: 
INSERT INTO VET('id', 'first_name', 'last_name') VALUES (1, 'AAAA', 'BBBB') [42001-192] 

하지만 : 나는 식별자

//// 편집

그래서 나는 이런 식으로 뭔가를 시도 확인과 부분을 이해하지 못하는 같이 가자.

INSERT INTO VET VALUES (1, 'AAAA', 'BBBB'); 

빌드 성공

교육 목적으로 만 왜 첫 번째 옵션에서 오류가 발생합니까?

+3

' 'VET' '은 문자열입니다. 그것은 필드 식별자가 아닙니다. 그건 ** ** VET입니다. 따옴표는 없습니다. –

+1

역 인용 부호 대신에'VET'을 따옴표로 묶었습니다. – sisanared

+2

'INSERT INTO VET (id, firstName, lastName) VALUES (1, 'AAAA', 'BBBB'); ' – DimaSan

답변

1

열 이름이나 테이블 이름을 따옴표로 묶어서는 안됩니다.

INSERT INTO VET(id, first_name, last_name) VALUES (1, 'AAAA', 'BBBB')