0
我有一個CustomTaskChange
Liquibase(除了其他ChangeSets)。 我希望我的應用程序在實際執行之前顯示所有ChangeSet的SQL。在我的理解中,updateSQL
應該預覽SQL並不執行任何操作。然而,CustomTaskChange
立即執行。當我打電話給updateSQL
時,我預料CustomTaskChange
會被忽略。CustomTaskChange實際執行時被稱爲updateSQL
的變更:
<changeSet id="2" author="clu">
<comment>Print out 'helloworld'.</comment>
<customChange class="path.to.HelloWorldUpdate">
</customChange>
</changeSet>
的CustomTaskChange:
public class HelloWorldUpdate implements CustomTaskChange {
@Override
public void execute(Database database) throws CustomChangeException {
System.out.println("HELLO WORLD!!");
}
}
當調用updateSQL
控制檯輸出 「Hello World!」
這是一個錯誤?有沒有解決方法?
謝謝!
[編輯]
感謝您的回答。也許我沒有說清楚...... 我實際上想要一個Java方法在'update'上運行,上面的類'HelloWorldUpdate'只是一個玩具的例子。實際的'CustomSqlChange'應該根據程序中的計算更新列。但它是數據庫重構的一部分。 – ludsen
當調用updateSQL時,我希望LB能夠預覽CustomSqlChange的SQL,但對於CustomTaskChange什麼也不做。如果它只是預覽DB操作,爲什麼它會執行該任務? – ludsen
'updateSQL'用於寫入liquibase將對文件而不是數據庫執行的更改。然後你可以預覽文件(作爲一個用例)並查看liquibase將執行的操作。 – Jens