如何解决H2“执行DDL错误”错误?

时间:2019-02-11 09:13:36

标签: java hibernate spring-boot orm h2

我想在springboot中通过H2创建表,但运行时出现以下错误;

  

org.hibernate.dialect.Dialect:HHH000400:使用方言:   org.hibernate.dialect.H2Dialect       org.hibernate.tool.schema.spi.CommandAcceptanceException:执行DDL错误“创建表bank_account(id bigint不为null,余额   double不为null,全名varchar(128)不为null,主键(id))“   通过JDBC语句

...

data.sql:

Insert into Bank_Account(ID, Full_Name, Balance) values (1, 'Ibrahim', 2500);
Insert into Bank_Account(ID, Full_Name, Balance) values (2, 'Ates', 4210);

pom.xml;

<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>

Application.properties;

# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2
# Datasource
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create

我想念什么?


解决方案;

问题是由实体的列名引起的。我将名为“全名”的实体更改为“全名”,然后问题解决了。

2 个答案:

答案 0 :(得分:0)

问题似乎是由于您试图同时使用hibernate auto-ddl工具和Spring Boots schema.sql文件来初始化数据库。

根据文档:

  

在基于JPA的应用程序中,您可以选择让Hibernate创建架构   或使用schema.sql,但您不能同时使用两者。确保禁用   如果您使用schema.sql,则spring.jpa.hibernate.ddl-auto。

因此,请删除spring.jpa.hibernate.ddl-auto=create属性或schema.sql文件,以使Spring Boot不会尝试拾取它。

答案 1 :(得分:0)

在您的application.properties文件中添加以下属性

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect