1
我正在进行数据库迁移,其中我们将数据从1个表迁移到2个其他表。为此,我使用PL/SQL脚本。脚本的一个非常简化的版本低于可见:Liquibase脚本不会保留数据
BEGIN
FOR foo IN (SELECT * FROM FOO) LOOP
INSERT INTO BAR (ID, STATUS)
VALUES (foo.ID, foo.STATUS);
FOR foolog IN (SELECT * FROM FOO_LOG where ID = foo.ID) LOOP
INSERT INTO BAR_LOG (ID, REV);
VALUES (FOO_SEQ.CURRVAL, foolog.REV);
END LOOP;
END LOOP;
END;
的问题是:liquibase运行脚本,但是,它看起来好像脚本不运行任何数据被保存到数据库。如果我故意引入了一个打字错误(例如更改一个表名),那么脚本无法运行,因此它实际上执行了脚本。另外,当我手动运行SQL时,它按预期工作,所以看起来问题与liquibase有关。
任何线索为什么发生这种情况/如何解决这个问题?
编辑:用于
变更集:
<changeSet id="2.4.0-03" author="bvandenberge">
<sqlFile path="03-pie-conversion.sql"
relativeToChangelogFile="true"
plitStatements="false" />
<rollback />
</changeSet>
你有没有做过'提交;'在某个时候?这对于基于事务的数据库是必需的。 –
@ J.Chomel我试着添加一个COMMIT;就在END之前;但这并没有改变行为。接下来,在liquibase中,所有变更集都在事务中运行,因此在这种情况下应该处理提交。 – Bob
这是什么' '用于? –