【问题标题】:Can I apply changes across different databases on the same server using liquibase我可以使用 liquibase 在同一台服务器上的不同数据库中应用更改吗
【发布时间】:2014-12-02 04:48:10
【问题描述】:

我们有一个大型企业系统,在单个服务器 (Sybase) 上有许多数据库 开发人员将在一个数据库中进行更改,编写脚本,然后可能在另一个数据库中进行更改,将其添加到脚本列表等等。

然后我们的版本会运行这些脚本,以相同的顺序对不同数据库中的对象进行更改。

阅读 Liquibase 文档,如果您将所有更改应用于一个数据库,然后是另一个数据库,然后是另一个数据库,似乎它会起作用。在我们的情况下,这不会真正起作用,因为一个数据库中的更改可能依赖于之前在另一个数据库上完成的更改,反之亦然。

我如何使用 Liquibase 来做同样的事情?

【问题讨论】:

  • 您说的是在同一台服务器上的不同数据库中运行的不同数据库模式?只需使用 liquibase 分别管理每个架构,并在版本控制下拥有 3 个配置。

标签: sybase liquibase


【解决方案1】:

您可能需要开始查看Datical DB(免责声明:我在 Datical 工作),它是围绕 Liquibase 处理此类情况的一组工具和扩展。

或者,您可以做类似的事情,编写自己的工具来控制 Liquibase。 Liquibase 在几个不同的级别上是可控的——您可以使用脚本工具来执行 Liquibase 命令行,或者您可以使用 Java 或 Groovy(或与 JVM 中的工具集成的任何其他语言)并更直接地使用 Liquibase 类。

【讨论】:

    【解决方案2】:

    Liquibase 目前不支持连接到多个不同的数据库。正在考虑将其用于 4.0 版。

    如果您的数据库是相同的数据库实例,但架构不同,则可以使用 schemaName 属性将变更集定位到不同架构的变更集,从一个变更集到下一个变更集。您将需要一个可以访问所有架构的连接 URL。

    如果您的数据库是不同的实例,或者不能从单个连接 URL 全部访问,您可能可以创建自定义更改类或扩展,允许您针对不同的连接运行 SQL,尽管这不会像 schemaName 那样干净或简单选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2014-06-09
      相关资源
      最近更新 更多