当前位置: 首页 > news >正文

自己可以建网站吗/win10优化大师

自己可以建网站吗,win10优化大师,可以做测试网站,网站的运行与维护透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server 2008 R2 而因為liquibase 要連線到SQL Server還需要JDBC的套件…

透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了!

這篇我們就來做個簡單的版本演練,加深印象吧!

我使用的環境如下

System : Windows 7 

Database : SQL Server 2008 R2

而因為liquibase 要連線到SQL Server還需要JDBC的套件,各位如果需要的話,可以到這裡抓取 。 抓取後記得將對應的jar檔放到liquibase\lib資料夾底下 :)

上一篇我們是每次要做一個新的版本就建立一個新的檔案,然後進行版本更新

但其實liquibase是可以讓你集中利用一個檔案進行控管(當然其它版本的檔案是分散的)

這樣做的好處是,每當建立一個新的版本,你只需要在主要的ChangeLog裡面添加本次新版本檔案的路徑。

在還原與更新時,只需要利用主要的ChangeLog檔就可以進行對應的動作

在先前的文章裡,你可能會發現到liquibase 很常用到--changeLogFile這行參數,這行參數其實是用來指定你目前要操作的異動log檔路徑

每次都要打一定會覺得很煩人對吧!(其實還要額外加上連線路徑呢)

所以在這裡介紹一下liquibase.properties的用法

liquibase.properties其實就是將你常用到的一些參數整進一個設定檔中,如此一來你在打指令的時候,就不用再打一些額外的參數啦!

這個檔案只要跟liquibase的cmd放在同一層目錄下,在執行的時候他就會自動去找這個檔案囉!

基本設定的參數如下(這裡以SQL Server為例)

driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
classpath: ./lib/sqljdbc42.jar
url: jdbc:sqlserver://localhost:14333;database=StudentTrace;
username: stu
password: stu123
changeLogFile: MainChangeLog.xml

可以看到我們在最後一行指定了changeLogFile的檔名與路徑(只有指定檔名的話,代表檔案跟liquibase cmd同一層),

不像之前我們都是用.sql檔做為我們的changeLogFile,這裡的MainChangeLog.xml其實就是剛剛提到的「主要」ChangeLogFile檔啦!

透過這個檔我們會將其它的changeLogFile包進來使用。

這個檔的實際內容如下  

<databaseChangeLogxmlns="http://www.liquibase.org/xml/ns/dbchangelog"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsdhttp://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"><include  file="TestDbChangeLog_V1.0.sql"/><include  file="TestDbChangeLog_V1.1.sql"/>
</databaseChangeLog>

有沒有注意到include這段,我們將我們先前建立的TestDbChangeLog V1.0與V1.1都包進來了。

而這個檔的內容變化其實會有點像下面這個圖  

廢話不多說,我們就來實際演練一次

首先我們先建立好我們兩個版本的.sql檔分別為TestDbChangeLog_V1.0與TestDbChangeLog_V1.1

內容如下 

TestDbChangeLog_V1.0

--liquibase formatted sql
--changeset author:Jaja tag:ver1.0
CREATETABLE 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 Admin

TestDbChangeLog_V1.1

--liquibase formatted sql
--changeset author:Jaja tag:ver1.1
CREATETABLE 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

再來就是建立好我們的MainChangeLog.xml 做為我們統一的版本控制檔 (記得要設定好liquibase.properties唷)

一開始的內容如下

<databaseChangeLogxmlns="http://www.liquibase.org/xml/ns/dbchangelog"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsdhttp://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"></databaseChangeLog>

接下來我們就來練習版本推進的過程吧!

假設我們現在要做第一版V1.0的發佈更新,我們要做的動作就是

1.確定第一版V1.0的ChangeLogFile路徑

2.添加路徑到我們的MainChangeLog.xml

3.進行發佈更新

以下就來看看我們動作做的結果

添加路徑到我們的MainChangeLog.xml (這裡因為我ChangeLogFile都直接放在liquibase的根目錄下,所以直接加上檔名就好了)

<databaseChangeLogxmlns="http://www.liquibase.org/xml/ns/dbchangelog"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsdhttp://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"><include  file="TestDbChangeLog_V1.0.sql"/><!--我們第一個版本檔案位置 --></databaseChangeLog>

接下來我們就進行版本更新囉!這裡我是用PowerShell ISE方便來看我們指令的流程。你也可以用一般的CMD進行

可以看到我們資料庫在未進行異動更新前,空空如也~~~

接下來就執行我們異動更新的指令(因為我們已經設定了liquibase.properties,所以直接打指令就行了)

這裡用到的指令是liquibase update

確定更新成功後再回頭來看看我們的資料庫 (這裡因為是用PowerShell會有錯誤的提示,但這不會影響我們執行的內容)

  

可以看到我們資料庫有根據我們TestDbChangeLog_V1.0.sql內容,建立了一張資料表。此外還多出了兩張資料表,這兩張資料表其實是liquibase用來做更新追蹤使用的

下一步我們做一樣的動作,這次把TestDbChangeLog_V1.1.sql 加入到我們的MainChangeLog.xml

<databaseChangeLogxmlns="http://www.liquibase.org/xml/ns/dbchangelog"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsdhttp://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"><include  file="TestDbChangeLog_V1.0.sql"/>  <!--我們第一個版本檔案位置 --><include  file="TestDbChangeLog_V1.1.sql"/>  <!--我們第二個版本檔案位置 -->
</databaseChangeLog>

加入新的版本後記得執行liquibase update 進行異動更新

到這裡我們的資料庫一共會有四張資料表,其中兩張資料表分別是版本V1.0 (Admin) 與V1.1 (Account) 建立的

再來我們就要練習rollback (退版的過程) 

rollback退版的動作,其實是依照你changeLog裡面寫的動作來執行,所以如果指令太龐大的話,還是利用一些工具進行產生比較好。

而退版的流程其實就像下圖

這裡的執行「TestDbChangeLogVer1.1.sql裡面的rollback 區段語法」是什麼意思?

我們回頭來看看這個檔裡面我們寫了些什麼

--liquibase formatted sql
--changeset author:Jaja tag:ver1.1
CREATETABLE 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

要注意到的是所謂的rollback區段,也就是最後一行--rollback DROP TABLE Account 

這一行就會是當我們要從V1.1回到V1.0時,在資料庫上會執行的對應語法

實際的概念其實很簡單,每次當我們建立一個新的版本的時候,我們就要在rollback區段裡面,寫下如何還原到上一個版本的語法

聽起來是不是霧裡看花...

以我們V1.1的內容為例的話,我們在V1.1這個版本,多「建立」了一個新的資料表叫Account,所以對應的rollback語法,就會是「移除」這個Account資料表

所以反過來思考,如果是新增欄位的話,rollback就要寫移除欄位。其它的對應就要靠DBA您來想了!

這裡我們一樣來練習一下Rollback語法使用

我們可以先查一下liquibase替我們建立好的版本歷程資料表,可以看到我們目前是有兩個版本

接下來就是要做Rollback的動作了,根據上圖。我們可以知道我們目前是在V1.1這個版本(可以看到他有一個ORDEREXECUTED執行順序)

所以我們要回到上一版的話,可以下這樣的指令

liquibase rollbackCount 1 (意思是我們往回退「一個」版本)

執行結果如下

再次查看記錄表與重整資料庫後會發現,版本少了一個。而資料庫也確實將Account資料表移除了

到這裡不曉得各位有沒有什麼問題呢?

其實liquibase已經出來一段時間了,網路上的教學資源也蠻多的,如果可以利用這個做小小的版本控制

在目前Agile當道的情況下,DBA也能跟著一起Agile也不錯呢!

不過你可能會覺得疑惑,如果我目前已經有資料庫了或是正要建資料庫,要怎麼結合使用呢?

如果你已經有資料庫了,liquibase也有一道指令,可以讓你把目前資料庫的內容導出來變成changeLog格式。

指令是 liquibase --changeLogFile {你想要的changeLogFileName} generateChangeLog  (這裡要注意的是,凡是有用到--changeLogFile這個參數呀!一定都要加在最前面,不然就會無法正常執行唷!)

而如果你是正要建資料庫呢?這裡其實也很容易,一般我們在建資料庫前都會利用ER Model進行建模,最後再轉成實際的資料庫內容

其實就直接利用ER Model工具,將第一版的changeLogFile利用SQL format建立起來就好了唷!

以上就是這次的liquibase介紹,咱們下次見 :D

參考資料 :

http://blog.ctp.com/2014/09/02/database-migrations-with-liquibase/

http://blog.kent-chiu.com/2014/08/30/liquibase-101.html#section-2

https://blog.synyx.de/2012/08/migrating-data-with-liquibase/

http://www.neevtech.com/blog/2013/08/28/liquibase-a-time-machine-for-your-data/

https://pyrseas.wordpress.com/2011/03/01/sql-database-version-control-%E2%80%93-liquibase/

转载于:https://www.cnblogs.com/KingJaja/p/5171376.html

http://www.jmfq.cn/news/4808089.html

相关文章:

  • 蒙古文网站建设/西安今天刚刚发生的新闻
  • 网站后台修改的页面不能显示/西安企业网站seo
  • 站长工具精品国语日语/永久免费的建站系统有哪些
  • 网站建设产品说明书/怎样做一个自己的网站
  • 有哪些网站可以做家教/今日头条新闻最新疫情
  • 网站内容策略/山东济南seo整站优化费用
  • 网站建设 摊销年限/搜索引擎优化自然排名
  • 网站做推广有用吗/青岛seo青岛黑八网络最强
  • 做的网站如何全屏代码/上海sem
  • php网站的优势/百度关键词排名点
  • 网站开发包含哪些/自动点击器怎么用
  • php建设网站所用开发软件/国家免费职业培训平台
  • 佛山专业网站制作设计/重庆seo排名公司
  • 广州大石附近做网站的公司/seo双标题软件
  • 网站规划在网站建设中的作用是/网络营销是什么专业类别
  • 网站被黑是怎么回事/赣州seo推广
  • 怎么做系统网站/上海已经开始二次感染了
  • ui设计做兼职的网站/西安seo全网营销
  • 怎么自己制作网站链接/企业网站建设服务
  • p2p网站的建设/批量优化网站软件
  • dedecms 食品网站模板/互联网广告平台排名
  • 如何通过建设网站赚钱/怎样进行网络营销吸引顾客
  • 开网店要建网站 一起的吗/网站怎么申请怎么注册
  • 深圳北斗部标平台网站建设/网络营销的概念是什么
  • 现在宁波做网站/扬州整站seo
  • ECS 安装wordpress/西安seo诊断
  • 做网站的公司经营范围/网站免费建站app
  • 网站建设策划案/网站大全
  • 武汉网站seo服务/营销策划与运营方案
  • 郑州广告公司网站建设/全网模板建站系统