我想在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
我想念什么?
解决方案;
问题是由实体的列名引起的。我将名为“全名”的实体更改为“全名”,然后问题解决了。
答案 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