Spring 引导配置文件 - 运行 sql 脚本而不是 ddl-auto



我设置了 3 个配置文件(开发/测试/生产(像魔术一样工作(Java 和 Spring 启动的新手(

在我的开发配置文件中,数据库生成

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 自动时也不需要/使用它

。在我的追求"谷歌搜索"这个时,我遇到了 2014 年的帖子,自从从那时起事情出现以来,我感到非常困惑......

有,我指望那个;),一些属性必须设置为"运行此脚本",但我通过了文档......可能我错过了什么

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

感谢您的快速响应@Blagoj,该链接帮助了我..脚本通过设置DDL-auto来创建来执行..但它也从实体生成...如何阻止它这样做并执行脚本?

谢谢@luboskrnac您的建议! 会看看/使用它! .. 困扰我的是,我必须做错/从我的oppinion来看不太好...在开发中匹配产品.....希望在 dev 中做对了,一旦我可以证明它是正确的;)

。好吧,现在我最终手动设置了测试环境..但是一旦我知道更多,就会尝试自动化它......我看到总有一个工具可以解决注入问题;)

使用 Flyway 或 Liquibase 等数据库迁移工具创建初始架构和增量迁移数据库架构。现在重要的一点:在 DEV 和 PROD 环境中以同样的方式执行此操作!否则你就是在自找麻烦。

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

您甚至可以将示例数据插入到 PROD 中(如果可以将它们隐藏在测试帐户后面(。然后,您可以针对 PROD 实例运行自动测试,这对于验证重要功能在 PROD 中是否正常工作非常方便。

最新更新