介紹
Liquibase是一個獨立於開源數據庫的庫,用於跟蹤,管理和應用數據庫模式更改。它始於2006年,可以更輕鬆地跟蹤數據庫更改,尤其是在敏捷軟件開發環境中。想要了解更多建議去官網。
特性
- 支持幾乎所有主流的數據庫,如MySQL, PostgreSQL, Oracle, H2等;
- 支持多開發者的協作維護;
- 日誌文件支持多種格式,如XML, YAML, SQL等;
- …
本文目的
以前的數據庫添加字段大多直接操作數據庫,但可能在切換環境(如 dev,test,prod)時,忘記修改數據庫導致出錯,所以將數據庫控制交給 liquibase 是個很好的方式,本文使用Spring Boot 2.0 集成 liquibase ,使用的是 sql 控制的方式,sql方式比較方便,但是存在弊端,sql不能兼容所有數據庫。
使用方法
1.引入依賴
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
2.添加配置
spring:
liquibase:
# 開啓 liquibase
enabled: true
# 配置 changlog 文件路徑
change-log: classpath:/db/changelog/changelog-master.xml
詳細配置項
配置Key | 描述 |
---|---|
spring.liquibase.enabled | 是否開啓 liquibase (默認爲 true ) |
spring.liquibase.change-log | 配置文件的路徑,默認值爲 classpath:/db/changelog/db.changelog-master.yaml |
spring.liquibase.check-change-log-location | 檢查 change log 的位置是否存在,默認爲true. |
spring.liquibase.contexts | 用逗號分隔的運行環境列表 |
spring.liquibase.default-schema | 默認數據庫 schema |
spring.liquibase.drop-first | 是否先 drop schema (默認 false ) |
spring.liquibase.url | 要遷移的JDBC URL,如果沒有指定的話,將使用配置的主數據源 |
3.編寫 changlog-master.xml 文件
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<!-- 掃面 所有 Sql文件路徑 ,相對路徑-->
<includeAll path="../sqlfile/" relativeToChangelogFile="true"/>
</databaseChangeLog>
4.sql文件編寫
CREATE TABLE IF NOT EXISTS `test`(
`id` INT UNSIGNED AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`author` VARCHAR(40) NOT NULL,
`date` DATE,
PRIMARY KEY ( `id` )
);
5.持續更新sql文件(保證版本,創建新目錄,編寫更新sql)
alter table `test` add column `test_field` VARCHAR(100) NOT NULL;
總結
本文只是簡單的說了怎麼在 springboot 項目中使用 liquibase , 更多的 liquibase 姿勢還得細細研究。