前言 -

會寫這篇除了是要記錄一下使用的過程之外,也是發現到網路上找來的教學幾乎都是跟其它環境做結合

比較沒有單純利用command進行的流程。也沒有整體觀念的介紹,所以將我所理解的整理分享給大家。

因我對於Git版本控制比較熟悉,這當中會借用一點Git的觀念來做解釋 :)

liquibase - 介紹與觀念

liquibase是一套opensource的版本控制系統,其背後其實就是透過設定不同版本的changeLogFile,在執行時執行對應的SQL語法,來達到所謂的版本控制。

而在目前最新版的liquibase中,可以使用的ChageLog格式一共有XML、YAML、JSON、SQL四種格式。 而我文章中一律都是用SQL格式來做說明唷

refer : databasechangelog

在剛剛有提到liquibase是利用不同版本的changeLogFile來做版本控制,如果不太清楚的話。

以下就用兩個例子來做說明

TestDbChangeLogVer1.0.sql

--liquibase formatted sql
--changeset author:Jaja
CREATE
TABLE Admin
(
ID INTEGER NOT NULL IDENTITY NOT FOR REPLICATION ,
UserID NVARCHAR (50) NOT NULL ,
UserPassword NVARCHAR (50) NOT NULL ,
FK_UserRole INTEGER NOT NULL
)
ON "default"
;
--rollback DROP TABLE Managements

TestDbChangeLogVer1.1.sql

--liquibase formatted sql
--changeset author:Jaja
CREATE
TABLE Account
(
ID INTEGER NOT NULL IDENTITY NOT FOR REPLICATION ,
UserID NVARCHAR (50) NOT NULL ,
UserPassword NVARCHAR (50) NOT NULL )
ON "default"
;
--rollback DROP TABLE Account

這裡面你會注意到,在SQL格式中的changelog ,其實是利用註解的方式來讓liquibase知道執行的位置。詳細的說明就再請自行參閱囉!如果需要解釋再請回覆給我

回到正題來,我們分別建立了兩個.sql檔做為我們第一版的資料庫內容與第二版的資料庫內容。那我們實際使用是怎樣進行的呢?

可以先參考這張圖

其實liquibase在做版本控制實際上只有簡單幾步

1.建立本次版本ChangeLog的相關內容 (以我們文中提到的,就是TestDbChangeLogVer1.0.sql 與 1.1兩個檔案)

2.建立完成後執行更新異動。在這一步中,就會將ChangeLog裡面所寫的內容,更新到資料庫。可能會建立資料表、修改資料表或是新增測試資料之類的 。 常用的語法是liquibase --changeLogFile {ChangeLogFileName} update

在這裡我們可以想像成Git版本控制中的commit . 而每一次的commit都會在資料庫上面產生對應的動作

3.rollback回指定的版本,常用的語法是liquibase --changeLogFile TestDbChangeLogVer1.0.sql rollback {tagName} 或是 liquibase --changeLogFile TestDbChangeLogVer1.0.sql rollbackCount{要跳轉幾個版本}

rollback這個部分會詳細的在下一篇實際操作中介紹。 基本上如果各位有注意到的話,rollback這一段我們其實也有寫在ChangeLog裡面。而裡面的語法就會在你執行rollback指令時,在資料庫上執行

其實rollback跟Git當中的reset概念是一樣的,只是我們rollback的時候也一樣會在資料庫上面產生對應的「還原」動作

[心得] 如何利用liquibase進行資料庫版本控制 - 基礎觀念的更多相关文章

  1. [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習

    透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server ...

  2. Active Record: 資料庫遷移(Migration) (转)

    Active Record: 資料庫遷移(Migration) Programming today is a race between software engineers striving to b ...

  3. Delphi APP 開發入門(八)SQLite資料庫

    Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次 ...

  4. 如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database

    MySQL 是相當常用之資料庫伺服器,而微軟雲端服務 Microsoft Azure 上 Azure SQL Database 是一個功能強大且經濟實惠的選擇,透過本篇文章,使用 SQL Server ...

  5. vb.net 水晶報表CrystalReport 動態設定資料庫來源

    沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.confi ...

  6. [转]SQL Server 安全性概論與無法刪除資料庫使用者的解決辦法

    經常有人來問我特定 SQL Server 資料庫裡的使用者無法刪除的問題,這問題其實跟 SQL Server 的安全性架構有很大關係,解決這個問題當然還是瞭解觀念的重要性大於知道如何解決問題.除了講解 ...

  7. 安卓初級教程(4):sqlite建立資料庫

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...

  8. [MVC4-基礎] 從資料庫取值顯示在DropDownList中

    剛開始學MVC4,以下是一些基礎的學習筆記! 完成效果像下面這樣,資料來源是既有的Database. 1.Controller public ActionResult Index() { SqlCon ...

  9. VB.Net DataSet 填充資料庫內容

    '導入命名空間Imports System.Data.OleDb '定義變量 Dim ds As DataSet = New DataSet() Dim i, cn As Integer Dim Sq ...

随机推荐

  1. Exp6 信息搜集与漏洞扫描——20164325王晓蕊

    1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 2.1 各种搜索技巧的应用 2.1.1 Netcraft查询 Netcraft这个网站可以查询到特定网站的IP地址,以wei ...

  2. 【转载】sql monitor

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27067062/viewspace-2129635/ SQL Monitor Report 1. SQL Monit ...

  3. JVM之虚拟机类加载机制

    有兴趣可以先参考前面的几篇JVM总结: JVM自动内存管理机制-Java内存区域(上) JVM自动内存管理机制-Java内存区域(下)     JVM垃圾收集器与内存分配策略(一) 我们知道,在编写一 ...

  4. Xftp5软件使用详解

    一.首先运行Xftp5,然后导航栏上面有个小加号,点击进去. 二.接着出现如下界面,在这里填写名称(这个随意填写),主机填写要连接的主机的IP地址,然后协议的话,Linux系统一般选择SFTP协议,端 ...

  5. Webview 浏览器开源项目总结

    在Android开发中,我们不免会遇到使用WebView实现网页展示的需求,以下是本人之前star的开源项目,供大家参考: 一.CrosswalkWebview 项目地址:https://github ...

  6. 电脑知识,一键开启Win10“超级性能模式”

    现在主流系统以及从WIN7慢慢的转移到了WIN10,微软也为WIN10做了很多优化跟更新.今天要跟大家说的这个功能很多人肯定没有听说过.那就是WIN10的超级性能模式. 1. 大多数Win10是没有滴 ...

  7. Django项目添加应用路径

    sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

  8. react中的refs

    概述 很久之前就知道refs,感觉好神秘,恰好今天突然发现字符串形式的ref在官网不推荐使用了,于是好好总结一下ref的用法,供以后开发时参考,相信对其他人也有用. 参考资料: Refs & ...

  9. C#连接mysql数据库的一个例子和获取本机IP的方法

    本例子是一个最初级直接连接mysql数据库的例子,实现了往数据库插入数据的操作: string MyConnectionMysql="Server=localhost;Datbase=xxx ...

  10. MySql事务的隔离级别及作用

    逻辑工作单元遵循一系列(ACID)规则则称为事务. 原子性:保证事务是一系列的运作,如果中间过程有一个不成功则全部回滚,全部成功则成功.保证了事务的原则性. 一致性:一致性指的是比如A向B转100块钱 ...