1

所以,我目前正在尝试在 Java 应用程序中使用 Liquibase。现在它工作正常,我为自己构建了一个小工具,它可以毫无问题地创建和更新 h2 数据库。当我尝试使用格式化的 SQL 变更集时,就会出现问题。

我使用 xml MasterChangelog。在这个变更日志中,我指定了两个变更日志:一个包含数据库结构并为我创建所有需要的表的 XML,第二个是一个 SQL 变更日志,其中包含我的所有插入语句和所有数据。

更新工作并将数据放入数据库,问题我无法回滚。所以我查了一下,发现我需要为每个变更集添加一个回滚语句,我这样做了,但它仍然不起作用

示例: SOME_TABLE('ID_TABLE1', 'ID_TABLE2', 'someInput')

--changeset my.name:someId
INSERT INTO "PUBLIC"."SOME_TABLE" VALUES('someId', 'someOtherID', 'someInput');
--rollback DELETE FROM SOME_TABLE WHERE ID_TABLE1='someId'

这不起作用

 --changeset my.name:someId
 INSERT INTO "PUBLIC"."SOME_TABLE" VALUES('someId', 'someOtherID', 'someInput');
 INSERT INTO "PUBLIC"."SOME_TABLE" VALUES('someId', 'differentId', 'someInput');
 INSERT INTO "PUBLIC"."SOME_TABLE" VALUES('someId', 'IdFromHell', 'someInput');
 --rollback DELETE FROM SOME_TABLE WHERE ID_TABLE1='someId'

或这个

我在回滚后添加了一个分号,在插入后将它们保留,使每个插入都有自己的变更集或像上面那样将它们组合在一起,但没有任何效果。我总是得到臭名昭著的:“没有与 liquibase.change.core.RawSQLChange 创建相反”。

我在 h2 数据库中尝试了这些,并且它们自己的语句工作正常。我不明白出了什么问题,无论是使用控制台还是我的 java 逻辑它都不起作用。有人知道出了什么问题吗?

如果是这样,我很感激我能得到的每一个提示。

4

0 回答 0