SQLFILEタグと将来のロールバックエラーLiquiBaseを:ファイルが見つかりません

StackOverflow https://stackoverflow.com/questions/2236912

  •  19-09-2019
  •  | 
  •  

質問

私は私のAntスクリプトに、将来のロールバックタグを追加しました。私は(と私は将来、ロールバックはイムが探して何だと思う)やりたいことは、SQLロールバックスクリプトを生成することですが、それを実行せず(のスクリプトは、SQLスクリプトを使用して送達されなければならないロールバックはからの要求であります私のクライアント)。

私のchangelogファイルは<sqlFile>タグが含まれているそのうちのいくつかは、多くのチェンジセットを、持っています。

  

<databaseChangeLog ...>

     

<include file="latest/somesqlprocedure.xml" relativeToChangelogFile="true"/>

     

</databaseChangelog...>

latest/somesqlprocedure.xmlsqlFileタグを有する場合ます。

  

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">

     

     

<sqlFile path="${changelog.dir}/latest/myprocedure.sql" splitStatements="false" />

     

</changeSet>

     

</databaseChangeLog>

私はAntスクリプトを実行すると、私は次のエラーを取得する

  

liquibase.exception.ChangeLogParseException:   無効な移行ファイル:<sqlfile path=${changelog.dir}/latest/myprocedure.sql>    - ファイルが見つかりませんでした。

誰もが起こっていただきました!のアイデアを持っていますか?

このは、build.xmlファイルの抜粋です。

<target name="db-future-rollback" depends="init">
        <rollbackFutureDatabase
                    changeLogFile="${db.changelog.file}"
                    driver="${database.driver}"
                    url="${database.url}"
                    username="${database.username}"
                    password="${database.password}"
                    outputfile="${database.rollback.dir}"
                    promptOnNonLocalDatabase="${prompt.user.if.not.local.database}"
                    classpathref="project.classpath"
                    >
            </rollbackFutureDatabase>

    </target>

事前に感謝します。

役に立ちましたか?

解決

問題は、あなたのSQLFILE絶対パスではなく、クラスパス、相対パスを使用してから来ることができます。クラスパスの相対パスは、もともとLiquiBaseをでサポートされていましたし、まだ良いテストされたものでした。絶対パスオプションが最近追加された、とfutureRollbackSqlコードは、それをサポートするためのパッチが適用されていない可能性があります。

あなたは相対パスを使用してSQLFILEを試すことはできますか?

ファイル名が走っているチェンジに注意することがdatabasechangelogテーブルで使用されているので、

サイドノートとして、相対パスオプションは、一般的に良好です。あなたは絶対パスを使用する場合は、パス全体が格納され、あなたがしようとした場合、別のパスからの変更履歴を再実行します(または別のマシンから同じデータベースに対して実行されている)、LiquiBaseを、それが異なるチェンジだと思うし、しようとしますそれを再実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top