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!

时间: 2024-12-09 19:12:11

Flyway数据库版本控制的相关文章

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

今天给大家介绍一款比较好用的数据库版本控制工具Flyway.在通过Spring Boot构建微服务的过程中,一般情况下在拆分微服务的同时,也会按照系统功能的边界对其依存的数据库进行拆分.在这种情况下,微服务的数据库版本管理对于研发工程管理来说,就会是一个比较棘手的问题. 在正常的代码管理流程中,从产品研发研发的过程看,一般会经历功能开发.研发测试.集成测试.预发布测试.上线等多个环节.而对于同一个产品功能,可能还会涉及对多个微服务代码及数据库结构的改动. 而这些改动需要我们在以上流程中每发布一个

使用Source Safe for SQL Server解决数据库版本控制问题

简介 在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多个版本,而不会将代码库变得混乱,典型的场景包括Bug修复.添加新功能.版本整合等. 虽然在开发层面的版本控制软件已经非常成熟,但目前国内还没有专门针对数据库层面的版本控制软件来帮助不同角色的人员在数据库层面进行团队协作.变更代码管理以及对数据库的变更进行查看和比对.在数据库层面版本控制工具的缺乏可能会出现如

为什么说数据库版本控制是必须的

原文:为什么说数据库版本控制是必须的 原文出处:黄钊吉CSDN博客:为什么说数据库版本控制是必要的 前言 开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了.当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表.存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍不留神就出问题.我任职过的几家公司在开发流程中的版本控制做的非常到位,但数据库方面却是一片空白,在开发过程中,经常会涉及到表上增加列.修改列.修改存储过程和视图

mysql数据库版本控制dbv使用

版本控制软件有svn git等等,这些工具控制源码版本非常好用,但数据库的版本控制呢?传统方法是导出来整个数据库,这样的团队协作效率非常低.有没有一种工具,能方便同步数据库结构的呢?有的,也很多,本人使用dbv,能集成到PHP+MYSQL的项目中,很方便. dbv1.1版本下载 https://github.com/victorstanciu/dbv/archive/1.1.zip 使用方法: 1. 下载后,解压到已经在git或SVN版本软件控制下的工程目录下,比如本人的工程目录是93zp_pr

为什么数据库版本控制是必要的

原版的:黄赵佶CSDN博客:为什么说数据库版本号控制是必要的 前言 开发过程中的版本号控制非经常见,但在数据库的世界来说.版本号控制就是二等甚至三等公民了.当多人同一时候开发一个数据库管理和应用系统时,採用合理的方法监控数据库中表.存储过程和视图等对象的变动是非常重要的.每次更改数据库.都须要做具体的记录,稍不留神就出问题.我任职过的几家公司在开发流程中的版本号控制做的非常到位,但数据库方面却是一片空白.在开发过程中,经常会涉及到表上添加列.改动列.改动存储过程和视图,发生变化后,之前的数据库对

不使用SVN对数据库进行版本控制

最近在开发过程中,由于数据库内的存储过程很多,并且由于业务需求的变动,需要不断改写存储过程.经常出现不同开发人员的存储过程互相覆盖的情况,拖慢了开发进度,通过在网上的查找,我们现在找到了一款Source Safe for SQL Server来协助我们解决该类问题,下面简单写一下我们如何使用Source Safe for SQL Server保存历史数据库对象定义. 软件的安装可以在该软件的官网(http://www.grqsh.com/products.htm?tab=sourcesafe-f

Flyway详解以及Springboot集成Flyway(转)

Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复. Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表. 表中保存了版本,描述,要执行的sql脚本

配置管理之数据库版本控制策略

软件配置管理(Software Configuration Management,SCM)是界定软件的组成部分,对每个部分的变更进行版本控制,并维护不同部分之间的版本关联,以使软件在开发过程中任一时间的内容都可以被追溯的管理过程.软件配置管理通常包括版本控制.变更控制和过程支持三个大的方面,涉及配置项.工作空间管理.版本控制.变更控制.状态报告.配置审计等具体活动,软件配置管理一般会贯穿到整个软件研发生命周期以及各个知识领域,本文不做具体展开. 数据库版本是研发过程中需要把控的一个方面,但实际操

使用Source Safe for SQL Server解决数据库版本管理问题(转载)

简介 在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多个版本,而不会将代码库变得混乱,典型的场景包括Bug修复.添加新功能.版本整合等. 虽然在开发层面的版本控制软件已经非常成熟,但目前国内还没有专门针对数据库层面的版本控制软件来帮助不同角色的人员在数据库层面进行团队协作.变更代码管理以及对数据库的变更进行查看和比对.在数据库层面版本控制工具的缺乏可能会出现如