0

Liquibase 変更セットで問題が発生しました。変更セットはどういうわけかそのようなものです:

<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>

私はそれを絶対に知っており、table_a存在します...しかし、それでも常に実行され、リンクされたファイル内のSQLが有効かどうかを何度か確認しました。そのSQLを直接発行すると、文句なしに実行されます。table_btable_cview-definition-v1.sql

ファイル内のSQLview-definition-v1.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

ファイル内のSQLview-definition-v2.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
     , 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

4

1 に答える 1

0

1 つの可能性は、テーブルの適切なスキーマを検索していないことです。前提条件を次のように変更してみてください。

<tableExists schemaName="my_schema" tableName="table_a" />

チェックごとに。

もう 1 つのことは、生成された SQL を保存し、コマンドupdateSQLを使用している場合はパラメーターを使用して実行する価値があるということです。liquibaseそうすれば、実行する SQL が Liquibase が実行する SQL と同じであることを確認できます。

于 2016-04-18T15:52:45.177 に答える