2017-05-30 126 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