您好,登錄后才能下訂單哦!
Flyway是一款開源的數據庫sql腳本版本管理工具。
它的原理是:在schema中生成一張version表,記錄此次更新的sql腳本版本號,保證版本號能和數據庫對應起來。
在定義sql腳本名稱的時候需要使用如下版本規范:
1、前綴(可配置,默認值:V)
2、版本
3、分隔符(兩個下劃線)
4、描述(下劃線或空格分開)
5、后綴(可配置,默認情況下:SQL)
如:V1_Create_person_table.sql V2_Insert_persons.sql
其中Create_person_table和Insert_persons都是腳本功能的描述
具體集成過程如下:
目錄結構和maven的目錄結構一致,如下:
可以看到和src同級目錄有一個flyway的配置文件和工程的pom文件。
配置文件flyway.properties內容如下,主要配置的都是一些數據庫的連接信息.一目了然:
flyway.driver=oracle.jdbc.OracleDriver
flyway.url=jdbc:oracle:thin:@192.168.2.200:1521/orcl
flyway.user=qq
flyway.password=qq
flyway.schemas=FLYWAY
flyway_table=qq_version
flyway.placeholders.keyABC=valueXYZ
flyway.placeholders.otherplaceholder=value123
加flyway的plugin信息,如下:
切記在pom文件的依賴信息里一定要出現數據庫的驅動包:
其中lib目錄下放的是flyway的jar包flyway-commandline-4.0-sources.jar
切記:flyway的sql腳本存放目錄默認是resources/db/ migration。
可以看到在migration目錄下我有兩個腳本,腳本如下:
V1__Create_person_table.sql :
create table PERSON (
NAME varchar(80) not null
);
V2__Insert_persons.sql:
INSERT INTO PERSON (NAME) VALUES ('Peter Meyer');
INSERT INTO PERSON (NAME) VALUES ('Peter Bonnd');
INSERT INTO PERSON (NAME) VALUES ('Klara Korn');
配置完成之后,需要在jenkins上面配置工程了,這里需要注意的只是構建參數:
mvn flyway:init (初始化Flyway metadata )
mvn flyway:migrate (執行Flyway 升級操作)
mvn flyway:validate (校驗Flyway 數據正確性)
如下,是我的構建參數:
-X -Dflyway.configFile=flyway.properties flyway:migrate -Dmaven.test.skip=true
參數介紹:-X :debug級別構建,打印詳細的構建過程
-Dflyway.configFile= 指定對應的flyway配置文件
-Dmaven.test.skip=true 跳過測試用例
還記得配置文件里面有一個參數:
flyway.schemas=qq
在這里用戶必須具備創建schema的權限,因此這里給用戶授予dba權限:
重新編譯執行通過。
由于schema_version是記錄數據庫版本信息的,因此flyway對其做了保護策略,如果要查看這張表,則必須給表名加雙引號,如:select * from "schema_version"
這里說明下:
1.對于schema的構建,在采用jenkins構建的時候flyway先會去檢測schema存不存在,不存在創建,存在則跳過。因此建議大家在使用flyway構建前,先創建好schema
2.在寫配置文件的時候由于oracle默認的用戶名名稱都是大寫,因此配置文件中的schema也請標注為大寫。
可以在數據庫里查看生成的schema_version信息:
這張表就記錄了數據庫的sql腳本版本信息。后續有更新也會從這張表里面獲取當前的數據庫版本信息。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。