努力在运行时使用 Spring Boot 在数据库之间切换
Posted
技术标签:
【中文标题】努力在运行时使用 Spring Boot 在数据库之间切换【英文标题】:Struggling to switch between databases at runtime with Spring boot 【发布时间】:2022-01-08 02:23:47 【问题描述】:我正在尝试更改运行时使用的数据库(例如从 H2 到 mysql 并返回)。是否也可以同时使用它们(意味着无论何时保存存储库(使用看似正确的术语,或至少是约定),都保存在两个数据库中的任何数据)?
我尝试了很多不同的东西,但我对 Spring Boot 的了解非常有限。
我的尝试都围绕着尝试将 spring.profiles.active=h2 更改为 spring.profiles.active=mysql ,反之亦然,就像在 application.properties 文件中一样,但在代码中。
我不一定要寻找与我一直在尝试的方法相似的方法。
有人可以帮我弄清楚如何做到这一点吗?
任何意见将不胜感激!
附: 值得一提的是,我正在使用的代码在这里 (https://github.com/spring-projects/spring-petclinic)。
【问题讨论】:
为什么?由于这些是不同的数据库和不同的 SQL 方言,它们不会一对一翻译,所以只切换数据库是行不通的,你还需要重新配置 Hibernate,例如(不仅仅是方言,内存中的整个元数据,表示重新启动)。总而言之,你似乎在尝试一些你不应该做的事情。 感谢您的回复。基本上,我这样做是因为我正在尝试学习如何执行实时数据库迁移(两个数据库可能以非常不同的方式存储数据)。您认为应该如何解决?编辑:例如,我正在考虑以某种方式连接到一个数据库,将数据存储在一个变量中,切换到另一个数据库,然后将该变量的数据保存到另一个数据库中。 【参考方案1】:我建议你检查 Spring Cloud 配置,它是在运行时配置你的应用程序的机制。 https://cloud.spring.io/spring-cloud-config/reference/html/
【讨论】:
以上是关于努力在运行时使用 Spring Boot 在数据库之间切换的主要内容,如果未能解决你的问题,请参考以下文章
具有在运行时创建的多个数据源的 Spring Boot 和 Spring Data 应用程序