【问题标题】:Use Liquibase autogenerated xml for Corda Enterprise DB migration使用 Liquibase 自动生成的 xml 进行 Corda Enterprise DB 迁移
【发布时间】:2019-10-23 13:15:19
【问题描述】:

我切换到 Corda Enterprise 主要是为了尝试它如何处理自动数据库迁移。 在文档here 中,它说tools-database-manager 只为初始数据库生成 SQL 版本的 Liquibase 脚本,并且 SQL 版本是特定于数据库的,因此不应用于生产。

但也可以使用 liqubase cmd 使用以下命令生成 XML: /snap/bin/liquibase --url="jdbc:h2:tcp://localhost:10039/node" --driver=org.h2.Driver --classpath=/home/corda/Downloads/h2.jar generateChangeLog

我这样做了,然后我不得不删除所有与 corda 内部表相关的 chnagelog,只留下我自己的,似乎一切正常。

所以问题是——这种方法可能有一些我不知道的隐患。为什么 Corda 团队开发了 tools-database-manager,为什么他们还不支持使用 tools-database-manager 生成 xml?

这导致了另一个问题 - 例如,如果我忘记在初始脚本中包含我的一个表怎么办?似乎corda并没有抱怨它。不会创建我的表吗?如果初始脚本中缺少该表,我是否能够迁移该表?

【问题讨论】:

    标签: liquibase corda


    【解决方案1】:

    首先 tools-database-manager 是一个帮助工具,可让开发人员轻松执行数据库迁移。

    假设您的网络中有 2 个节点,每个节点使用不同的数据库。甲方使用 PostgreSQL,乙方使用甲骨文。如果甲方使用该工具通过连接 PostgreSQL 来创建迁移脚本,这将输出特定于 PostgreSQL 的 SQL 语句。

    因此这是不可移植的,因此据说生成的脚本是特定于数据库的。

    另外,您不想信任脚本并直接在生产数据库上触发它,它包含 DDL 语句,因此强烈建议每次生成脚本时,确保您知道脚本在做什么手动查看它。

    这个领域有很多增强功能,支持 XML 迁移脚本就是其中之一。

    如前所述,您应该手动查看迁移脚本。如果您忘记添加一张桌子,Corda 不会抱怨。稍后,当您尝试从您的代码中访问此表时,它会失败。

    是的,您可以通过添加创建表脚本来停止节点并再次创建表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2016-06-29
      • 2013-06-08
      • 2021-12-29
      • 2018-12-27
      相关资源
      最近更新 更多