【问题标题】:Customize Liquibase Control tables (DATABASECHANGELOG & DATABAEECHANGELOGLOCK)自定义 Liquibase 控制表(DATABASECHANGELOG 和 DATABAEECHANGELOGLOCK)
【发布时间】:2019-12-15 14:38:58
【问题描述】:

根据以下论坛的输入,指定系统属性并使用和设置 DATABASECHANGELOG 和 DATABASECHANGELOGLOCK 表的自定义名称(在 liquibase 更新执行时)。 http://forum.liquibase.org/topic/configurable-databasechangelog-table-name

Liquibase 3.5.1 版、数据库-Oracle 12c、OS-Redhat Linux

但是,在后续尝试执行未来的 liquibase 更新(针对相同的数据库架构)时,执行失败,因为它尝试再次重新创建自定义的 DATABASECHANGELOG 表 - 失败,对象名称已在使用中。尝试使用标准 liquibase 控制表名称(即 DATABASECHANGELOG 和 DATABASECHANGELOGLOCK)时不会发生这种情况

是否可以选择跳过重新创建自定义的 liquibase 控制表或针对此问题进行其他修复?

【问题讨论】:

  • 一些附加信息,当针对 Oracle 12c 数据库模式执行时会出现此问题。针对 Postgres 9.5 测试了相同的场景,并且它按预期工作(配置的更改日志表的行为与 DATABASECHANGELOG 相同)。我正在使用 JDK 8 并使用从 Oracle 网站下载的 ojdbc7.jar。

标签: linux oracle liquibase


【解决方案1】:

为什么要将这些设置为系统属性?

您可以像下面这样调用 liquibase(或在属性文件中定义的这些参数):

liquibase <regular arguments > --liquibaseSchemaName=YOUR_SCHEMA \
     --databaseChangeLogTableName=YOUR_DBCHANGELOG \
     --databaseChangeLogLockTableName=YOUR_DBCHANGELOGLOCK ....

它适用于我们(liquibase 3.5.1,Oracle 12c)。

谢谢

【讨论】:

    【解决方案2】:

    问题是由于在对 oracle 数据库执行时自定义表名区分大小写。奇怪的错误,但在以大写形式指定值时已解决(通过系统属性/命令行)

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      相关资源
      最近更新 更多