Liquibase未添加唯一约束



嗨,我有一个问题,当添加唯一的约束创建到我的更改日志。在日志中,它显示liquibase正在读取更改集,但我仍然无法通过查询找到唯一的约束。问题是,它只适用于当我重新创建数据库,它不工作,如果表存在之前。

<changeSet id="20220524-1" author="Saba Mosleh">
<preConditions onFail="MARK_RAN">
<sqlCheck expectedResult="0">
SELECT DISTINCT count(CONSTRAINT_NAME) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE
TABLE_NAME = 'voucher_codes' AND CONSTRAINT_TYPE = 'UNIQUE' and CONSTRAINT_NAME = 'unique_voucher_code';
</sqlCheck>
</preConditions>
<addUniqueConstraint tableName="voucher_codes" columnNames="code" constraintName="unique_voucher_code"/>
</changeSet

DATABASECHANGELOG表是由liquibase创建的,删除你的changelog记录,这样当你重新启动应用程序时,liquibase会执行你的变更日志。或者直接添加

<addUniqueConstraint 
tableName="voucher_codes" 
columnNames="code"
constraintName="unique_voucher_code" 
runAlways="true"/>

每次执行该语句。

最新更新