当我使用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的工作方式。
spring.jpa.hibernate.ddl-auto=create- drop
schema.sql
编辑
我认为问题(不是真正的问题)是您的应用程序指向mysql实例。
查看当前的Spring Boot属性:
spring.datasource.initialization-mode=embedded # Initialize the datasource with available DDL and DML scripts.
默认值为embedded-例如,仅当您正在运行并且是嵌入式数据库(如H2)时才进行初始化。
embedded
还看到斯蒂芬的答案在这里。他说:
只要将spring.datasource.initialization-mode = always添加到您的项目中就足够了。
因此,尝试设置:
spring.datasource.initialization-mode=always