flyway的使用

在频繁的工程实践中,服务端程序与数据库不断的更新,如果服务端和数据库部署不一致,经常性的会导致各种问题。为了解决这一问题,可行的方案之一就是让数据库随着服务端的版本而更新,flyway就是一种解决方案。

一. 目的

管理数据库更新。

二.方法

直接在java工程中嵌入sql脚本。工程重新部署时,会自动更新数据库,保证数据库与代码同步,避免了手动更新数据库带来的弊病。

三.原理

在数据库中创建了一个表schema_version,该表的最后记录为当前数据库版本。

四.步骤

1.在pom文件中加入如下:

<dependency>

<groupId>org.flywaydb</groupId>

<artifactId>flyway-core</artifactId>

<version>3.2.1</version>

</dependency>

2.在dispatcher-servlet.xml中加入

<bean id="flyway" class="org.flywaydb.core.Flyway" depends-on="dataSource" lazy-init="false"  init-method="migrate">

<property name="dataSource" ref="dataSource"/>

<property name="initOnMigrate" value="true" />

<property name="validateOnMigrate" value="false" />

</bean>

同时让其它数据库操作bean依赖于flyway这个bean,避免数据库未升级完毕已经进行数据库操作。

<bean id="hibernate4AnnotatedSessionFactory"

class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"  depends-on="flyway">

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"  depends-on="flyway">

3.在resources下建立数据库脚本升级目录,请注意脚本命名方式

五.注意

1.flyway不支持回滚,如果你增加了一个字段,然后又要删除这个字段,就只能写一个V2_6_0_1__Delete_new_like_Column.sql的脚本。

2.一旦使用flyway,就不要使用手动方式修改数据库,同时不得删除schema_version中数据。

时间: 2024-10-14 12:59:36

flyway的使用的相关文章

Flyway数据库版本控制

前言:最近工作上遇到个问题,项目开发过程中,开发代码可以通过svn来版本控制,但数据库又该如何来管理呢?多个人接触数据库,当对表.字段或数据修改后,又怎么来同步呢?经过苦寻,发现了个叫flyway的开源项目:http://flywaydb.org/,java编写,官方的介绍就是我的初衷,岂能不心动? 官网是英文的,查了下居然没有中文文档,难道没有中国人用? 慢慢看了下官方文档,试着做了下,一次成功!(离开电脑,蹦达几下,继续坐回电脑) 自己写个小教程吧 1.将flyway-core-2.3.ja

How to use JDBC-Authentication of Spring Boot/Spring Security with Flyway

java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) at org.springframework.test.context.suppo

数据库版本管理工具Flyway——基础篇

Flyway 默认规约 SQL 脚本文件默认位置是项目的源文件夹下的db/migration 目录. Java 代码默认位于db.migration 包. SQL 脚本文件及Java 代码类名必须遵循以下命名规则:V[_][__description] .版本号的数字间以小数点(. )或下划线(_ )分隔开,版本号与描述间以连续的两个下划线(__ )分隔开.如V1_1_0__Update.sql .Java 类名规约不允许存在小数点,所以Java 类名中版本号的数字间只能以下划线进行分隔. <p

Flyway客户端使用

一.flyway介绍 Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式.Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等. Flyway主要基于6种基本命令:Migrate,

数据库版本管理工具Flyway(4.0.3)---工作机制(译文)

How Flyway works The easiest scenario is when you point Flyway to an empty database. 最容易的方案是Flyway指向一个空的数据库. It will try to locate its metadata table. As the database is empty. Flyway won't find it and will create it instead. FlyWay将试图查找它的元数据表.因为数据库是

Flyway的第一次认识

1.  引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的一种解决方案,当时各个环境的数据库乱作一团,没有任何一个人(开发.测试.维护人员)能够讲清楚当前环境下的数据库是哪个版本,与哪个版本的应用相匹配,如何升级到与新版本的应用相匹配. 想到管理数据库版本时,先是心底形成了一个初步的解决方案,大致是通过数据库中的某张表来记录数据库表结构的历次更新与对应版本,在每次数据库表结构调整时除了提供库表更新sql ,还必须提供更新记录与对应版本的sql,以帮助维护数据库版本信息,并在遇到问题时提

Flyway学习笔记

Flyway做为database migration开源工具,功能上像是git.svn这种代码版本控制.google搜索database migration,或者针对性更强些搜索database migration java,会有其它的framework.tool.甚至aws的service.因为项目使用到了flyway,而且确实google中排第一位的搜索结果就是flyway,那就之后有机会再与其它方案做比较,先对flyway做下学习笔记. 0.支持的数据库 支持数据库有 Oracle, SQ

企业分布式微服务云SpringCloud SpringBoot mybatis (十五)Spring Boot中使用Flyway来管理数据库版本

Flyway简介 Flyway是一个简单开源数据库版本控制器(约定大于配置),主要提供migrate.clean.info.validate.baseline.repair等命令.它支持SQL(PL/SQL.T-SQL)方式和Java方式,支持命令行客户端等,还提供一系列的插件支持(Maven.Gradle.SBT.ANT等). 官方网站:https://flywaydb.org/ 本文对于Flyway的自身功能不做过多的介绍,读者可以通过阅读官方文档或利用搜索引擎获得更多资料.下面我们具体说说

Flyway Overview and Installation

https://flywaydb.org/documentation/ Flyway is an open-source database migration tool. It strongly favors simplicity and convention over configuration. It is based around just 7 basic commands: Migrate, Clean, Info, Validate, Undo, Baseline and Repair