小编典典

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

spring-boot

当我使用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中是否有一些更改,或者这是错误/问题?


阅读 622

收藏
2020-05-30

共1个答案

小编典典

这里检查文件。

在基于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
2020-05-30