为什么Spring Boot 2.0应用程序不运行schema.sql?

当我使用Spring Boot 1.5时,在设置适当的配置后,在应用程序启动时,Hibernate执行了位于 / resources 文件夹中的

schema.sql 文件。在Spring Boot 2.0发布之后,此功能不再起作用。我在文档中找不到有关此更改的任何信息。这是我的

application.properties 文件内容:

spring.datasource.url=...

spring.datasource.username=...

spring.datasource.password=...

#spring.jpa.hibernate.ddl-auto=create-drop

spring.jpa.hibernate.ddl-auto=none

spring.jpa.show-sql=true

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

Spring Boot 2.0中是否有一些更改,或者这是错误/问题?

回答:

在这里检查文件。

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

auto。

您有spring.jpa.hibernate.ddl-auto=create-

drop这就是为什么schema.sql不执行的原因。看起来这就是Spring Boot的工作方式。

我认为问题(不是真正的问题)是您的应用程序指向mysql实例。

查看当前的Spring Boot属性:

spring.datasource.initialization-mode=embedded # Initialize the datasource with available DDL and DML scripts.

默认值为embedded-例如,仅当您正在运行并且是嵌入式数据库(如H2)时才进行初始化。

还看到斯蒂芬的答案在这里。他说:

只要将spring.datasource.initialization-mode = always添加到您的项目中就足够了。

因此,尝试设置:

spring.datasource.initialization-mode=always

以上是 为什么Spring Boot 2.0应用程序不运行schema.sql? 的全部内容, 来源链接: utcz.com/qa/417340.html

回到顶部