Oracle 我怎样才能找到,为什么带有先决条件的Liquibase迁移是MARK_运行的而不是执行的?
我遇到了liquibase变更集的问题。变更集是这样的:Oracle 我怎样才能找到,为什么带有先决条件的Liquibase迁移是MARK_运行的而不是执行的?,oracle,liquibase,oracle12c,preconditions,Oracle,Liquibase,Oracle12c,Preconditions,我遇到了liquibase变更集的问题。变更集是这样的: <changeSet id="recreate-cool-dbobject" author="WTF"> <preConditions onFail="MARK_RAN"> <tableExists tableName="table_a" /> <tableExists tableName="table_b" /> <tableExists tableNam
<changeSet id="recreate-cool-dbobject" author="WTF">
<preConditions onFail="MARK_RAN">
<tableExists tableName="table_a" />
<tableExists tableName="table_b" />
<tableExists tableName="table_c" />
</preConditions>
<comment>…should be executed if Feature X is available</comment>
<sqlFile
path="resources/view-definition-v2.sql"
relativeToChangelogFile="true"
dbms="oracle"
stripComments="false"
endDelimiter="-- /"
/>
<rollback>
<sqlFile
path="resources/view-definition-v1.sql"
relativeToChangelogFile="true"
dbms="oracle"
stripComments="false"
endDelimiter="-- /"
/>
</rollback>
</changeSet>
view-definition-v2.SQL
文件中的SQL有点像
CREATE OR REPLACE VIEW view_tab_abc
(
col_a
, col_b
, col_c
, CREATED_AT
, UPDATED_AT
) AS
SELECT a.id AS col_a
, b.id AS col_b
, c.id AS col_c
, a.created_at AS CREATED_AT
, a.updated_at AS UPDATED_AT
FROM tab_a a
JOIN tab_b b on b.id=a.tab_b_id
JOIN tab_c c on c.id=b.tab_c_id
WITH READ ONLY
CREATE OR REPLACE VIEW view_tab_abc
(
col_a
, col_b
, col_c
, CREATED_AT
, UPDATED_AT
) AS
SELECT a.id AS col_a
, a.tab_b_id AS col_b
, a.tab_c_id AS col_c
, a.created_at AS CREATED_AT
, a.updated_at AS UPDATED_AT
FROM tab_a a
WITH READ ONLY
我已经试过tableName=“table_a”
或tableName=“table_a”
,但还是感觉根本不起作用。我还有其他几个变更集没有显示这个问题。有人有什么线索吗
使用的Liquibase版本为3.4.2,数据库为Oracle 12cR1 StandardEdition1
谢谢你的提示和问候,
B一种可能是它没有为您的表寻找正确的模式。尝试更改先决条件以获得以下内容:
<tableExists schemaName="my_schema" tableName="table_a" />
对于每一张支票
另一件事是,如果您使用的是liquibase
命令,那么使用updateSQL
参数保存生成的SQL并运行它总是值得的。这样,您可以确保运行的SQL与Liquibase运行的SQL相同