前言:
最近工作上遇到個問題,項目開發過程中,開發代碼可以通過svn來版本控制,但數據庫又該如何來管理呢?多個人接觸數據庫,當對表、字段或數據修改后,又怎么來同步呢?經過苦尋,發現了個叫flyway的開源項目:http://flywaydb.org/ ,java編寫,官方的介紹就是我的初衷,豈能不心動?
官網是英文的,查了下居然沒有中文文檔,難道沒有中國人用?
慢慢看了下官方文檔,試著做了下,一次成功!(離開電腦,蹦達幾下,繼續坐回電腦)
自己寫個小教程吧
1、將flyway-core-2.3.jar放到項目lib中,下載地址:http://flywaydb.org/getstarted/download.html
2、在src目錄下建立保存sql版本文件的路徑:src/db/migration,flyway默認查找路徑,可以改,但沒必要。
3、在sql版本文件路徑中增加sql文件,命名規則,如:V1__2014_4_13.sql ,V開頭+版本號+雙下劃線+描述,描述中可以有下劃線,后綴為sql。別問能不能修改這個規則,否則,我咬你。
4、增加flyway的java類,有命令行工具,但還是java類用起來方便,如下:
1
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
|
package com.cms.flyway; import java.io.IOException; import java.util.Properties; import com.googlecode.flyway.core.Flyway; public class FlywayApp { // 讀取數據庫配置參數 private static Properties config = new Properties(); static { try { config.load(Thread.currentThread().getContextClassLoader().getResourceAsStream( "activerecord.properties" )); } catch (IOException e) { e.printStackTrace(); } } // 執行數據庫版本升級 public static void migration() { // Create the Flyway instance Flyway flyway = new Flyway(); // Point it to the database flyway.setDataSource(config.getProperty( "com.et.ar.ActiveRecordBase.url" ), config.getProperty( "com.et.ar.ActiveRecordBase.username" ), config.getProperty( "com.et.ar.ActiveRecordBase.password" )); flyway.setInitOnMigrate( true ); // Start the migration flyway.migrate(); } } |
5、在服務器啟動的時候或者定時器 執行該類的migration()方法即可。
6、第一次執行會生成一個專門存放數據庫schema_version的表
7、以后數據庫有了新的改動,導出新版本sql文件(如:mysqldump -u -p databasename>/xx.sql)改為新版本命名文件放到db.migration路徑下,flyway會自動幫你更新數據庫版本的。
總結
到此這篇關于Flyway數據庫版本控制的教程詳解的文章就介紹到這了,更多相關Flyway數據庫版本控制內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!