繁体   English   中英

Spring Boot Profiles-运行sql脚本而不是ddl-auto

[英]Spring Boot Profiles - have an sql-script run instead of ddl-auto

我设置了3个配置文件(dev / test / prod)像魔术一样工作(Java和Spring Boot的新功能)

在我的开发资料中,数据库是使用

hibernate.ddl-auto

工作很棒...也可以

.hibernate.hbm2ddl.import_files

我用测试数据填充数据库的女巫

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

所以我尝试使用:

datasource.data 

&& ||

datasource.schema

以不同的组合,带有file:,类路径以.....为前缀

当我做:

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

通过在该配置文件中将其设置为无

hibernate.jpa.generate-ddl

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

……在我的“谷歌搜索”任务中,我遇到了2014年以来的帖子,并且从那时起出现了一切……

有,我指望;),必须将某些属性设置为“ runThisScript”,但是我通过文档获取了……可能我错过了一些东西

有人可以指出我正确的方向吗?
谢谢!

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

thx @luboskrnac为您提供建议! 来看看/使用它! ..让我感到困扰的是,我必须做错/从我的观点出发做得不是很好...在dev中匹配产品.....希望在dev中做到正确并在我进入该状态时就进行生产可以证明它是正确的;)

...好吧,现在我最终手动建立了测试环境..但是,一旦我知道更多,我将尝试使其自动化...我看到总有一个解决注入问题的工具;)

使用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中正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM