【发布时间】:2022-11-12 04:05:23
【问题描述】:
我想在 spring boot 启动时使用 liquibase 将新列添加到现有表中。
但是在我正在使用的特定模式中,我已经手动添加了它。
所以我在启动时收到一个错误,表明该列已经存在(因为它确实存在):
Error creating bean with name 'liquibase' defined in class path resource
[...LiquibaseConfiguration.class]: LiquibaseException:
liquibase.exception.MigrationFailedException: Migration failed for
change set db/changelog/AlterTable_MyTable_AddNewCol.xml::1::me (manual):
Reason: liquibase.exception.DatabaseException:
Duplicate column name 'new_col' [Failed SQL: (1060)
ALTER TABLE my_schema.my_table ADD new_col INT NULL]
是否有一个 liquibase 前提条件选项来添加列只有当它尚不存在;如果它已经存在,不要出错?
我尝试了以下操作,并且出现了上述错误的过程错误:
<databaseChangeLog ... >
<changeSet author="me (manual)" id="1">
<preConditions onFail="WARN">
<columnExists tableName="my_table" columnName="new_col" />
</preConditions>
<addColumn tableName="my_table">
<column name="new_col" type="integer"/>
</addColumn>
</changeSet>
</databaseChangeLog>
【问题讨论】:
标签: liquibase