【问题标题】:DatabaseChangeLog and Lock tables generated on every run每次运行时生成的 DatabaseChangeLog 和 Lock 表
【发布时间】:2016-05-12 04:28:17
【问题描述】:

我正在开展一个项目,该项目在少数服务器上管理许多数据库,我们正在使用 liquibase 来保持我们的数据库结构是最新的。

据我了解,liquibase 旨在在第一次识别为特定数据库执行 Changelog 文件时生成 Databasechangelog 和 databasechangelogLock 表。

问题在于,在我们的一个环境中,一些数据库似乎尝试在每次运行时生成这些表,因此我们从 liquibase 获取的脚本在每次脚本运行时都会继续进行初始表创建生成。实际的 db 更改及其 databasechangelogtable 条目会按预期生成,只要每次运行都忽略初始表的 create table 语句,我就可以继续生成和运行脚本。

这发生在在另一台服务器上正常工作的数据库上。 “问题”服务器上的大多数数据库也可以正常工作,因此只有少数数据库遇到了这个问题。

如果有人知道 liquibase 的哪个部分进行检查以确定是否需要生成表,或者我如何操纵运行而不是每次都尝试创建它们,将不胜感激。

谢谢

【问题讨论】:

  • 当您说“一些数据库似乎尝试在每次运行时生成这些表”时,这是什么意思? “运行”之前的数据库状态是什么,你正在运行什么命令,之后数据库的状态是什么?
  • 感谢您的回复。当我发布这个问题时,我并没有完全了解 liquibase 是如何实施的。事实证明,已经用 Java 构建了一个自定义应用程序,该应用程序使用 liquibase 生成脚本 - 不幸的是,我没有更多时间处理这个问题,而且目前没有更好的理解。不过,谢谢你,让我意识到我们的 Liquibase 实施远未走寻常路,在我继续之前需要我或我的团队进行更多调查。

标签: sql-server liquibase


【解决方案1】:

几乎每个 Liquibase 命令都会检查表并在需要时创建它们。如果您想知道“Liquibase 的哪个部分”正在执行此操作,通常是 StandardChangeLogHistoryServiceStandardLockService

【讨论】:

  • 感谢您的回复。当我发布这个问题时,我并没有完全了解 liquibase 是如何实施的。事实证明,已经用 Java 构建了一个自定义应用程序,该应用程序使用 liquibase 生成脚本 - 不幸的是,我没有更多时间处理这个问题,而且目前没有更好的理解。但是,当我能够寻找解决方案时,这可能是尝试反向工作以确定答案的好地方。感谢您向我指出这两项服务。
猜你喜欢
  • 2017-06-01
  • 2013-09-14
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 2023-03-14
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多