自定义Liquibase控制表(DATABASECHANGELOG& DATABAEECHANGELOGLOCK)

时间:2017-03-18 16:11:04

标签: linux oracle liquibase

根据以下论坛的输入,指定了系统属性,并为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控制表或针对此问题的其他修复?

2 个答案:

答案 0 :(得分:2)

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

您可以调用liquibase,如下所示(或属性文件中定义的这些参数):

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

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

由于

答案 1 :(得分:0)

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