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
這是什麼' '用於? –