JeecgBoot整合Flyway,版本化管理資料庫

JeecgBoot低程式碼開發框架,後臺服務使用SpringBoot開發,支援MySQL、Oracle、PostgreSQL,SQLServer多種資料庫,整合Flyway版本化管理SQL指令碼。

程式碼託管:GitHub和Gitee,國內使用者訪問Gitee速度快。

系統環境:Win10,JDK8,maven,docker。

JeecgBoot整合Flyway,版本化管理資料庫

一,SpringBoot整合Flyway

JeecgBoot整合Flyway,版本化管理資料庫

1,pom.xml中新增依賴

JeecgBoot整合Flyway,版本化管理資料庫

2,application.yml中新增配置

JeecgBoot整合Flyway,版本化管理資料庫

3,新增初始化SQL指令碼

建立資料表,匯入初始化資料。

JeecgBoot整合Flyway,版本化管理資料庫

二,功能測試

Flyway管理維護Migration,SQL指令碼在服務啟動時自動執行。

為了方便測試,使用docker-compose,快速啟動。

1,配置JeecgBoot後端服務

修改配置檔案application。yml,在MySQL和redis連線中引用hostname

JeecgBoot整合Flyway,版本化管理資料庫

2,編譯打包

執行命令mvn package,也可以使用IntelliJ IDEA,得到target目錄下的jar包檔案。

JeecgBoot整合Flyway,版本化管理資料庫

3,生成Docker映象

執行docker-compose build

JeecgBoot整合Flyway,版本化管理資料庫

4,啟動Docker容器

執行docker-compose up

JeecgBoot整合Flyway,版本化管理資料庫

JeecgBoot整合Flyway,版本化管理資料庫

5,訪問後臺服務

JeecgBoot整合Flyway,版本化管理資料庫

三,常見問題

1,異常ClassNotFoundException,找不到FlywayCallback類

原因:flyway版本不匹配。

解決方法:在pom。xml中新增flyway-core依賴時,不要指定版本,SpringBoot將自動匹配管理。

2,執行SQL指令碼錯誤FlywayException: No value provided for placeholder expressions

原因:Flyway預設會解析SQL指令碼中的變數,如果沒有設定引數值,將出錯。

解決方法:配置flyway不替換變數值。

spring。flyway。placeholder-replacement=false

3,建立flyway_schema_history資料表失敗

原因:如果配置了Ali Druid Wall安全過濾器,將禁止SQL語句中包含註釋。Flyway在建立migration歷史記錄表時的SQL語句包含註釋。

解決方法:配置WallFilter允許SQL註釋。

commentAllow=true

JeecgBoot整合Flyway,版本化管理資料庫