我设置了3个配置文件(dev / test / prod),就像魔术一样工作(Java和Spring Boot的新功能)
在我的开发资料中,数据库是使用
生成的hibernate.ddl-auto
工作非常好...
.hibernate.hbm2ddl.import_files
我用来用测试数据填充数据库的女巫
在测试环境中,我想运行一个脚本,该脚本从转储中设置数据库。更像是生产(由于某种原因实体与数据库不匹配)
所以我尝试使用:
datasource.data
&& ||
datasource.schema
以不同的组合 文件:,类路径以.....
为前缀当我这样做:
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创建..来执行脚本,但是它也是从实体生成的...如何阻止其执行该操作&&拥有脚本被执行?
thx @luboskrnac为您提供建议!来看看/使用它! ..让我感到困扰的是,我必须做错/从我的观点出发做得不是很好...在dev中匹配产品.....希望在dev中做到正确并在我进入该状态时就进行生产可以证明它是对的;)
......好吧,现在我最终手动建立了测试环境..但一旦我知道更多信息,便会尝试将其自动化...我看到总有一个解决注入问题的工具;)>
答案 0 :(得分:1)
使用数据库迁移工具(例如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中正常工作。