我最初的更改集是:
<changeSet id="1.2.0-01" author="Arya">
<createIndex tableName="org_message" indexName="ix_org_message_userid_peerid">
<column name="user_id"/>
<column name="peer_id"/>
</createIndex>
</changeSet>
执行成功,没有任何警告。
然后我从
1.2.0-01
表中删除了已执行的 DATABASECHANGELOG
记录(注意:创建的索引仍然存在),并向变更集添加了 indexExists
前置条件:
<changeSet id="1.2.0-01" author="Arya">
<preConditions onFail="MARK_RAN">
<not>
<indexExists indexName="ix_org_message_userid_peerid"/>
</not>
</preConditions>
<createIndex tableName="org_message" indexName="ix_org_message_userid_peerid">
<column name="user_id"/>
<column name="peer_id"/>
</createIndex>
</changeSet>
在执行中,我看到了这个日志:
JdbcDatabaseSnapshot$CachingDatabaseMetaData -|液体碱需要 访问 DBA_RECYCLEBIN 表,以便我们可以自动处理 删除和恢复约束的情况。由于 Oracle 没有 正确恢复引用的原始表名 约束,我们使用 DBA_RECYCLEBIN 中的信息来 自动纠正此问题。
您用来连接数据库的用户(ORG_PLATFORM)需要 在我们可以之前设置“SELECT ON SYS.DBA_RECYCLEBIN”权限 执行此操作。请运行以下 SQL 来设置 适当的权限,然后尝试再次运行该命令。
GRANT SELECT ON SYS.DBA_RECYCLEBIN TO ORG_PLATFORM;
但是变更集已成功执行:带有“MARK_RAN”的
1.2.0-01
记录已添加到DATABASECHANGELOG
表中。
此警告是应该修复的重要问题还是只是默认日志记录(如 CORE-2940 问题中提到的)?我正在使用 liquibae
3.8.9
和 oracle 12c
。
这是一个您可以忽略的警告。您可以使用以下属性禁用警告:
liquibase.oracle.ignoreRecycleBin=true
没有让它工作,检查了最新的liquibase,看起来应该是:
liquibase.ignoreRecycleBinWarning=true