?db-migration:Flyway、Liquibase 擴展支持達夢(DM)、南大通用(GBase 8s)、OpenGauss 等國產數據庫。部分數據庫直接支持 Flowable 工作流。
開源代碼倉庫?Github:https://github.com/mengweijin/db-migration
開源代碼倉庫 Gitee:https://gitee.com/mengweijin/db-migration
已支持
- 達夢(DM 8):支持 Flyway 和 Liquibase,支持 flowable 工作流。
- 南大通用(GBase 8s):支持 Flyway 和 Liquibase。
- OpenGauss:支持 Flyway,Liquibase 可直接使用 postgres 驅動得到支持。
- 人大金倉(Kingbase):可直接使用 postgres 驅動得到支持,無需依賴 db-migration 項目。
版本說明
- ??:不支持;
- 🈯?:flyway 或 liquibase?需要指定特定版本才支持;
- ???:flyway 或 liquibase?不需要指定版本就支持(不指定版本,則默認使用的 spring boot 默認版本);
db-migration 版本 | spring boot 版本 | flyway 版本 | liquibase 版本 |
---|---|---|---|
2.0.8 | 2.0.x.RELEASE | 7.15.0 ?? | 4.27.0 ?? |
2.0.8 | 2.1.x.RELEASE | 7.15.0 ?? | 4.27.0 🈯? |
2.0.8 | 2.2.x.RELEASE | 7.15.0 ?? | 4.27.0 🈯? |
2.0.8 | 2.3.x.RELEASE | 7.15.0 ?? | 4.27.0 🈯? |
2.0.8 | 2.4.x | 7.15.0 🈯? | 4.27.0 🈯? |
2.0.8 | 2.5.x | 7.15.0 🈯? | 4.27.0 🈯? |
2.0.8 | 2.6.x | 8.0.4 ??? | 4.27.0 🈯? |
2.0.8 | 2.7.x | 8.5.11 ??? | 4.27.0 🈯? |
2.0.8 | 3.0.x | 9.5.1 ??? | 4.27.0 🈯? |
2.0.8 | 3.1.x | 9.16.3 ??? | 4.27.0 🈯? |
2.0.8 | 3.2.x | 9.22.3 ??? | 4.27.0 🈯? |
2.0.8 | 3.3.x | 10.10.0 ??? | 4.27.0 ??? |
2.0.8 | 3.4.x | 10.10.0 🈯? | 4.27.0 🈯? |
參考文檔
- 【達夢 DM DBMS】 使用 Flyway
- 【達夢 DM DBMS】 使用 Liquibase 和 Flowable 工作流
- 【南大通用 GBase 8s】 使用 Flyway
- 【南大通用 GBase 8s】 使用 Liquibase
- 【華為 OpenGauss】 使用 Flyway
- 【華為 OpenGauss】 使用 Liquibase
- 【人大金倉 Kingbase】 使用 Flyway 的示例工程
- 【人大金倉 Kingbase】 使用 Liquibase 的示例工程
Flyway 對 PL/SQL 的支持
Oracle 的存儲過程、觸發器、函數等 PL/SQL 代碼塊需以?/
?符號結尾,告知 SQL 引擎執行該代碼塊。
因此,在 Flyway 中執行 Oracle 存儲過程腳本時,必須在 PL/SQL 塊的末尾添加?/
?符號,以明確表示代碼塊的結束。 這是 Oracle 數據庫對 PL/SQL 語法解析的要求,Flyway 在執行腳本時同樣需要遵循這一規則。
Flyway 默認使用普通 SQL 解析器執行腳本,而 Oracle 的 PL/SQL 塊需要明確的分隔符。添加 / 符號能幫助 Flyway 識別代碼塊邊界。
例如在創建存儲過程或觸發器時:
CREATE OR REPLACE PROCEDURE test_proc AS
BEGIN-- 存儲過程邏輯。此處略。
END;
/CREATE TRIGGER test_trig AFTER INSERT ON test_user
BEGINUPDATE test_user SET name = CONCAT(name, 'triggered');
END;
/
與普通 SQL 腳本的區別:
普通的 DDL(如建表)或 DML(如插入數據)腳本無需 / 符號,因為它們不是多行代碼塊。 例如:
CREATE TABLE users (id NUMBER PRIMARY KEY);
INSERT INTO users VALUES (1);
但涉及 PL/SQL 結構的腳本(如存儲過程、函數、包)必須添加 /。
其他文檔
- Oracle 清理 Flowable 7.0.1 所有表腳本
- MySQL、Oracle、PostgreSQL 等數據庫使用Flyway 的溫馨提示
完整的基礎使用示例參考代碼倉庫中,各自的 demo 工程。