Flyway数据库版本控制
前言:最近工作上遇到个问题,项目开发过程中,开发代码可以通过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类用起来方便,如下:
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会自动帮你更新数据库版本的。
over!
Flyway数据库版本控制的更多相关文章
- Spring Boot 集成 Flyway 实现数据库版本控制
在项目迭代开发中,难免会有更新数据库 Schema 的情况,比如添加新表.在表中增加字段或者删除字段等,那么当我对数据库进行一系列操作后,如何快速地在其他同事的电脑上同步?如何在测试/生产服务器上快速 ...
- 这么强?!Erda MySQL Migrator:持续集成的数据库版本控制
为什么要进行数据库版本控制? 现代软件工程逐渐向持续集成.持续交付演进,软件一次性交付了事的场景逐渐无法满足复杂多变的业务需求,"如何高效地进行软件版本控制"成为我们面临的挑战.同 ...
- 数据库版本控制工具:NeXtep Designer
下载地址:http://pan.baidu.com/s/1dFuxKFB NeXtep Open Designer 是一个强大的多人协同/多平台的开源数据库的开发工具,致力于于自动化和生产级的集成开发 ...
- SpringBoot整合Flyway(数据库版本迁移工具)
简介 在团队开发当中,有可能每个人都是使用自己本地的数据库.当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新. Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的). ...
- [jOOQ中文]3. 数据库版本管理工具Flyway
https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...
- 如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制
简介 在开发过程,我们常常会遇到数据库环境部署的问题,当部署正式环境中,数据库产生的多文件脚本在管理上就容易出现混乱,特别是你还没有权限访问正式环境的情况,就更为困难.SSDT为我们提供了很好的解决方 ...
- 数据库迁移框架Flyway介绍
官方文档 https://flywaydb.org/getstarted/firststeps/api[https://flywaydb.org/getstarted/firststeps/api] ...
- 微服务架构 - SpringBoot整合Jooq和Flyway
在一次学习分布式跟踪系统zipkin中,发现了jooq这个组件,当时不知这个组件是干嘛的,后来抽空学习了一下,感觉这个组件还挺用的.它主要有以下作用: 通过DSL(Domain Specific La ...
- flyway和liquibase的使用样例
在代码上我们有svn和git等诸多的版本控制方法. 但是在数据库上却没有相应的工具.一度导致多环境见的数据库同步难以维持. flyway和liquibase都是常见的数据库版本控制工具. flyway ...
随机推荐
- CSS中的三种基本的定位机制(普通流、定位、浮动)
一.普通流 普通流中元素框的位置由元素在XHTML中的位置决定.块级元素从上到下依次排列,框之间的垂直距离由框的垂直margin计算得到.行内元素在一行中水平布置. 普通流就是html文档中的元素如块 ...
- delphi实现截全屏功能
procedure TForm1.Button10Click(Sender: TObject);var bmp: TBitmap; can: TCanvas; dc: HDC; Image1: TIm ...
- 关于C#/sqlserver生成32位数据库字段总结
一.C#中用Guid.NewGuid().ToString() Sql中用NEWID() 以上方法生成的是36位的GUID,如果需要转换成32位,则需要替换掉其中的'-'字符. Sql中的方法:r ...
- 构建针对 iOS 和 Android 的原生扩展
第一部分:音量控制入门 http://www.adobe.com/cn/devnet/air/articles/building-ane-ios-android-pt1.html 第二部分: 开发 A ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- WDF(Windows Driver Frameworks)驱动框架源码!!
微软官方提供源码:https://github.com/Microsoft/Windows-Driver-Frameworks
- P3950 部落冲突
题目背景 在一个叫做Travian的世界里,生活着各个大大小小的部落.其中最为强大的是罗马.高卢和日耳曼.他们之间为了争夺资源和土地,进行了无数次的战斗.期间诞生了众多家喻户晓的英雄人物,也留下了许多 ...
- C# - 操作大型XML文件
对于小型XML文件,利用XDocument和XMLDocument可以很方便进行读写(推荐XDocument),但问题是XDocument和XMLDocument是In-Memory类型的,随着文件大 ...
- [译文]casperjs使用说明-测试
capserjs自带了一个测试框架,它提供了一个使你能够更容易的测试你的web应用的工具集. 注意: 1.1版本变更 这个测试框架,包括它的所有API,仅能使用在casperjs test子命令下 如 ...
- CSS3 文本溢出问题
一.单行: 效果: 实现这各效果必须要加上: text-overflow: ellipsis; /*文本溢出*/ overflow: hidden; /*配合使用:溢出隐藏*/ white-space ...