2017-05-30 3 views
1

Ich habe eine Spring-Boot-Anwendung und ich versuche, einige Daten beim Start der Anwendung zu initialisieren.H2-Schema-Initialisierung. Syntaxfehler in SQL-Anweisung

Dies ist meine Anwendungseigenschaften:

#Database connection 
spring.datasource.url=jdbc:h2:mem:test_db 
spring.datasource.username=... 
spring.datasource.password=... 
spring.datasource.driverClassName=org.h2.Driver 

spring.datasource.initialize=true 
spring.datasource.schema=schema.sql 
spring.datasource.data=schema.sql 


#Hibernate configuration 
#spring.jpa.hibernate.ddl-auto = none 

Dies ist schema.sql:

CREATE TABLE IF NOT EXISTS `Person` (
    `id`   INTEGER PRIMARY KEY AUTO_INCREMENT, 
    `first_name` VARCHAR(50) NOT NULL, 
    `age`  INTEGER NOT NULL, 
    PRIMARY KEY(`id`) 
); 

und data.sql

INSERT INTO `Person` (
    `id`, 
    `first_name`, 
    `age` 
) VALUES (
    1, 
    'John', 
    20 
); 

Aber ich habe ‚Syntaxfehler in der SQL-Anweisung 'beim Start der Anwendung:

19:08:45.642 6474 [main] INFO o.h.tool.hbm2ddl.SchemaExport - HHH000476: Executing import script '/import.sql' 
19:08:45.643 6475 [main] ERROR o.h.tool.hbm2ddl.SchemaExport - HHH000388: Unsuccessful: CREATE TABLE Person (
19:08:45.643 6475 [main] ERROR o.h.tool.hbm2ddl.SchemaExport - Syntax error in SQL statement "CREATE TABLE PERSON ([*]"; expected "identifier" 
Syntax error in SQL statement "CREATE TABLE PERSON ([*]"; expected "identifier"; SQL statement: 

Ich kann nicht verstehen, was falsch mit diesem SQL ist.

Antwort

2

Versuchen Sie diesen Code. Entfernen Sie PRIMARY KEY( ID ) und führen Sie es aus.

CREATE TABLE IF NOT EXISTS `Person` (
    `id`   INTEGER PRIMARY KEY AUTO_INCREMENT, 
    `first_name` VARCHAR(50) NOT NULL, 
    `age`  INTEGER NOT NULL 
); 
+0

Vielen Dank! Es klappt – Kirill