2017-05-30 64 views
1

我有一個彈簧引導應用程序,我試圖在應用程序啓動時初始化一些數據。H2模式初始化。 SQL語句中的語法錯誤

這是我的應用程序性能:

#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 

這是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`) 
); 

和data.sql

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

但我在SQL語句中得到了「語法錯誤'在應用程序啓動時:

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: 

我不明白,這個SQL有什麼問題。

回答

2

試試看看這個代碼。刪除PRIMARY KEY( id )並執行它。

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

謝謝!有用 – Kirill