我的 flyway 和 spring-boot 工作正常,但我似乎无法spring.datasource.data正确连接。
如果我有一个文件src/main/resources/db/seeds/one_project.sql. 我在我的application.properties文件中尝试了以下内容。
# fully qualified path
spring.datasource.data=file:///fully/qualified/path/db/seeds/one_project.sql
# classpath specific
spring.datasource.data=classpath:/db/seeds/one_project.sql
# relative path
spring.datasource.data=/db/seeds/one_project.sql
Run Code Online (Sandbox Code Playgroud)
我实际上可以开始工作的唯一一件事就是复制one_project.sql到src/main/resources/schema.sql(即使将其复制到src/main/resources/data.sql也不起作用。
文档中是否有我完全遗漏的内容?
我一直在关注这里的文档。
在此先感谢您的帮助!
卡在那很长一段时间。我的上下文:Spring Boot 2.2.6 + Hibernate 5.4 + classpath(src/main/resources) 中的 script.sql。要在应用程序启动时执行脚本,我需要在 application.properties 中添加:
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=update
spring.datasource.data=classpath:script.sql
Run Code Online (Sandbox Code Playgroud)
并删除 script.sql 中实际代码和 BETWEEN 代码之前的所有注释。或者,如果您需要注释,请SELECT 1;在注释行之后的下一行添加。因为注释后的下一行似乎被忽略了。无论您粘贴的注释行后有多少换行符。
如我所见,如果以下条件之一为真,Spring Boot 将执行数据脚本:
长话短说
Create a blank schema.sql if you want your data.sql to run.
Also as stated in a comment it must execute one line such as `select 1` or `select 1 from dual`
Run Code Online (Sandbox Code Playgroud)
你说
我唯一能真正开始工作的就是将 one_project.sql 复制到 src/main/resources/schema.sql
这让我觉得很明显你没有 schema.sql
所以只需创建一个空白的schema.sql,然后它就会运行one_project.sql
源代码-https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceInitializer.java
正如您所看到的,它收集架构位置,如果架构资源为空,则它不会继续运行 data.sql (这是 runSchemaScripts() 方法的顶部)
| 归档时间: |
|
| 查看次数: |
16067 次 |
| 最近记录: |