【问题标题】:How to handle database changes made by automatic update script while using Liquibase?使用 Liquibase 时如何处理自动更新脚本所做的数据库更改?
【发布时间】:2014-06-20 10:53:11
【问题描述】:

我正在开发一个使用 Wordpress 作为其中一部分的 Web 应用程序。我想使用 Liquibase 来跟踪我的数据库更改。

如何处理Wordpress自动更新脚本对数据库的修改?

我可以忽略它们吗?并且只将我自己的更改放在 Liquibase 更改日志文件中?

【问题讨论】:

    标签: auto-update liquibase flyway


    【解决方案1】:

    您可以在每次 WordPress 升级后对模式进行 diffChangelog,以便 Liquibase 可以跟踪更改。不过你可以忽略它们——Liquibase 并不真正关心未知的模式对象。唯一的问题是如果您的更改和 WordPress 更改发生冲突。

    【讨论】:

    • 谢谢,如果我要使用 diffChangelog,我还需要在数据库中将 changeSets 标记为已完成?我该怎么做?
    • 最简单的方法是使用 changeLogSync 或 changeLogSync 命令将它们标记为已运行。或者您可以手动插入数据库更改日志
    • @NathanVoxland,谢谢!我还是有点不清楚,所以我在这里回复了forum.liquibase.org/topic/…如果你能确认或建议改进我在那里描述的过程,那真的对我很有帮助
    【解决方案2】:

    你可以而且应该忽略它们。

    Liquibase 只做一件事。它跟踪以下事实:

    • 某个命令(例如,createTable)...
    • ...在时间 0 看起来有点像(表的名称、列等)...
    • ...最终在时间 0 执行(它将这条记录存储在 DATABASECHANGELOG 中)。

    就是这样。它不是结构执行器或数据库状态重构引擎。很有可能——并且允许并且经常预期——数据库将被其他工具更改,而 Liquibase 将不知道发生了什么。

    因此,只需将您的命令保存在您的变更日志中,不要担心预先存在的数据库结构,使用前提条件来控制您的变更集是否运行,并忽略由于其他工具而在数据库中发生的所有其他事情.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2018-10-07
      • 1970-01-01
      相关资源
      最近更新 更多