Java Spring启动配置文件-运行sql脚本而不是ddl auto

Java Spring启动配置文件-运行sql脚本而不是ddl auto,java,hibernate,spring-boot,Java,Hibernate,Spring Boot,我设置了3个概要文件(dev/test/prod),它们像魔术一样工作(java和SpringBoot的新功能) 在我的开发概要文件中,数据库是用 hibernate.ddl-auto 工作得很好。。。也有 .hibernate.hbm2ddl.import_files 我用来用测试数据填充数据库的开关 在测试环境中,我想运行一个脚本,它从转储中设置db。。更像生产(由于某种原因,实体与数据库不匹配) 所以我试着用: datasource.data &&|| 在不同的组合中,使用 文件:

我设置了3个概要文件(dev/test/prod),它们像魔术一样工作(java和SpringBoot的新功能)

在我的开发概要文件中,数据库是用

hibernate.ddl-auto
工作得很好。。。也有

.hibernate.hbm2ddl.import_files
我用来用测试数据填充数据库的开关

在测试环境中,我想运行一个脚本,它从转储中设置db。。更像生产(由于某种原因,实体与数据库不匹配)

所以我试着用:

datasource.data 
&&||

在不同的组合中,使用 文件:,类路径前缀

当我这样做时:

datasource.data=data.sql
它说:

'ServletContext resource [/data.sql]' is invalid: The specified resource does not exist
。。。将文件四处移动/src/main/src/main/resources/src/main/resources/META-INF。。所有那些东西

我不明白“ServletContext”是什么意思

我确实残疾了

hibernate.ddl-auto
在该配置文件中将其设置为“无”

为false,即使在设置ddl auto时不需要/使用它

…在我的“谷歌搜索”任务中,我遇到了2014年的帖子,从那时起事情就出现了,我完全困惑了

有,我相信;),某些属性必须设置为“runThisScript”,但我通过了文档。。。。。。可能我错过了什么

有人能给我指出正确的方向吗?
谢谢大家!

thx@Blagoj感谢您的快速响应,该链接帮助了我。。通过将ddl auto设置为create.来执行脚本。。但它也是从实体生成的。。。如何阻止它这样做&&执行脚本

谢谢你的建议!我会看一看/用一用。。困扰我的是,我不得不做错事/因为我的机会不太好。。。在dev中匹配prod。。。。。曾希望在dev中正确地执行此操作,并在我能够证明它是正确的情况下在该状态下进行prod;)


。。。好的,现在我结束了手工设置测试环境的过程。。但一旦我知道更多,我会尝试自动化它。。。我发现总有一个解决注入问题的工具;)

使用数据库迁移工具(如Flyway或Liquibase)创建初始模式,并对数据库模式进行增量迁移。现在重要的一点是:在DEV和PROD env中使用相同的方法!否则你就是自找麻烦

可以在Hibernate的帮助下生成初始模式
spring.jpa.hibernate.ddl auto=create
将从jpa模型创建架构+
logging.level.org.hibernate.SQL=DEBUG
将使用SQL命令创建此架构。此SQL转储可以用作Flyway或Liquibase的初始迁移脚本


您甚至可以将样本数据插入PROD(如果您可以将它们隐藏在测试帐户后面)。这样,您就可以对PROD实例运行自动测试,这可以方便地验证重要功能是否在PROD中工作。

感谢您的快速响应。。。我将generate ddl设置为“create”,根据我的理解,这将从实体和执行脚本生成db,但似乎工作正常……必须仔细看看它做了什么。。。。sql脚本中现在出现错误;)我的建议是“如果您只绑定到一个dbms,那么只依赖liquibase的脚本,不要依赖hbm2ddl”,因为它允许非常细粒度的sql类型和约束。当从一个dbms切换到另一个dbms时,混合使用hbm2ddl和liquibase可能会导致意外的结果。我提到过专门使用db迁移工具+使用
ddl auto
生成初始模式。我的方法不是把它们混在一起。
hibernate.ddl-auto
hibernate.jpa.generate-ddl