我们有一个大型企业系统,在一台服务器上有许多数据库(Sybase) 开发人员将在一个数据库中进行更改,编写脚本,然后在另一个数据库中进行更改,将其添加到脚本列表中等等。
然后,我们的发行版将运行这些脚本,以相同的顺序对不同数据库中的对象进行更改。
阅读Liquibase文档,如果您将所有更改应用于一个数据库,然后是另一个数据库,然后是另一个数据库,它似乎会起作用。在我们的情况下哪个不能真正起作用,因为一个数据库中的更改可能依赖于之前在另一个数据库上进行的更改,反之亦然。
我怎样才能使用Liquibase来做同样的事情?
答案 0 :(得分:0)
您可能需要开始查看Datical DB(免责声明:我在Datical工作),这是一套围绕Liquibase的工具和扩展来处理这些情况。
或者,你可以做类似的事情,编写自己的工具来控制Liquibase。 Liquibase可以在几个不同的级别进行控制 - 您可以使用脚本工具来执行Liquibase命令行,或者您可以使用Java或Groovy(或与JVM中的工具集成的任何其他语言)并更直接地使用Liquibase类。
答案 1 :(得分:0)
Liquibase目前不支持连接到多个不同的数据库。它正在考虑4.0版本。
如果您的数据库是相同的数据库实例但是不同的模式,则可以使用schemaName属性将不同模式下的changeSets从一个changeSet定位到下一个。您将需要一个可以访问所有模式的连接URL。
如果您的数据库是不同的实例,或者不能从单个连接URL访问,您可以创建自定义更改类或扩展,允许您针对不同的连接运行SQL,尽管这不会像schemaName那样干净或简单选项。