前言:最近工作上遇到个问题,项目开发过程中,开发代码可以通过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数据库版本控制的更多相关文章

  1. Spring Boot 集成 Flyway 实现数据库版本控制

    在项目迭代开发中,难免会有更新数据库 Schema 的情况,比如添加新表.在表中增加字段或者删除字段等,那么当我对数据库进行一系列操作后,如何快速地在其他同事的电脑上同步?如何在测试/生产服务器上快速 ...

  2. 这么强?!Erda MySQL Migrator:持续集成的数据库版本控制

    为什么要进行数据库版本控制? 现代软件工程逐渐向持续集成.持续交付演进,软件一次性交付了事的场景逐渐无法满足复杂多变的业务需求,"如何高效地进行软件版本控制"成为我们面临的挑战.同 ...

  3. 数据库版本控制工具:NeXtep Designer

    下载地址:http://pan.baidu.com/s/1dFuxKFB NeXtep Open Designer 是一个强大的多人协同/多平台的开源数据库的开发工具,致力于于自动化和生产级的集成开发 ...

  4. SpringBoot整合Flyway(数据库版本迁移工具)

    简介 在团队开发当中,有可能每个人都是使用自己本地的数据库.当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新. Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的). ...

  5. [jOOQ中文]3. 数据库版本管理工具Flyway

    https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...

  6. 如何使用SSDT进行SQL数据库的自动化部署到生产环境和版本控制

    简介 在开发过程,我们常常会遇到数据库环境部署的问题,当部署正式环境中,数据库产生的多文件脚本在管理上就容易出现混乱,特别是你还没有权限访问正式环境的情况,就更为困难.SSDT为我们提供了很好的解决方 ...

  7. 数据库迁移框架Flyway介绍

    官方文档 https://flywaydb.org/getstarted/firststeps/api[https://flywaydb.org/getstarted/firststeps/api] ...

  8. 微服务架构 - SpringBoot整合Jooq和Flyway

    在一次学习分布式跟踪系统zipkin中,发现了jooq这个组件,当时不知这个组件是干嘛的,后来抽空学习了一下,感觉这个组件还挺用的.它主要有以下作用: 通过DSL(Domain Specific La ...

  9. flyway和liquibase的使用样例

    在代码上我们有svn和git等诸多的版本控制方法. 但是在数据库上却没有相应的工具.一度导致多环境见的数据库同步难以维持. flyway和liquibase都是常见的数据库版本控制工具. flyway ...

随机推荐

  1. Python 操作 Excel 、txt等文件

    #xlrd 读取excel import xlrd import os #获取文件路径 filepath = os.path.join(os.getcwd(),'user_info') #获取文件名称 ...

  2. opencv—读取一张图片并滤波

    #include <opencv2\opencv.hpp> #include <iostream> #include <string> using namespac ...

  3. Mac OS X Yosemite & Arduino安装CH340 USB转串口驱动

    新买的Arduino开发板 USB转串口使用了CH340芯片,在Mac OS X Yosemite上正常安装驱动后,在Arduino IDE的端口没发现相应的设备,使用以下方法后就能使用USB转串口调 ...

  4. [LeetCode 题解]: Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  5. 在ie6下将png24图片透明

    没想到IETester中IE6和IE6真实版本不一样...之前一直没有实现png图片的透明度,现在发现原来是版本不一样惹的祸.总之,我将解决方法以demo的方式显示出来,以供再次利用. <!DO ...

  6. C#设计模式--工厂模式之简单模式

    简单工厂模式定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品 ...

  7. table.insert(tableName, v)

    self.teammateList = {} for i=1,3 do local teammate = UI.CreateLuaWidget("Widget_TeammateInfo&qu ...

  8. 当在安卓低版本呈现的界面(H5)出现问题的时候,我们怎么解决?

    昨天,在医院现场的客服人员,向我们反馈一个问题:说一位用户用他的安卓手机打开我们的app之后,界面是乱掉的:如下图: 向客服询问了具体的设备信息:安卓系统版本号是4.2 下意识觉得是因为css的兼容问 ...

  9. 2018OCP最新题库052新加考题及答案整理-27

    27.Examine these facts about a database: 1. USERS is the database default tablespace. 2. USER1, USER ...

  10. php 中将完整的年月日时分秒的时间转换成 年月日的形式

    strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数), 将完整的时间格式转换成时间撮的形式,再去进 ...