美文网首页
「Flyway」数据库版本管理

「Flyway」数据库版本管理

作者: 廖雪青 | 来源:发表于2019-06-04 11:07 被阅读0次
前言

什么是数据库版本管理,为什么要进行数据库版本管理?

传统的开发模式

团队的Developer可以使用git,svn等代码管理工具很方便的同步代码,每个Developer都需要在本地维护一个数据库,对数据库的任何修改:新建表,修改表字段等都需要通知其他Developer,其他Developer需要手动维护本地数据库。
存在的问题
1.数据库同步工作繁琐且易出现问题
2.经常出现相同的代码在不同的Developer本地环境中出现不一样的结果
3.数据库的变更无法追踪,出现问题时不方便快速定位

数据库版本管理

数据库版本管理即管理并跟踪数据库的变更。目前有多种数据库版本管理工具,如FlywayMybatis,是独立于数据库的应用。

Flyway

一.Migrate
Migrate是指把数据库Schema迁移到最新版本,是Flyway工作流的核心功能。

二.Metadata
Metadata(元数据)表,要用于记录版本变更历史以及Checksum。该表的表名:flyway_schema_history。首次运行应用或执行对应的Flyway命令时,会自动创建该表格。每执行完一个版本脚本都会新插入一条数据以本次对数据库的更改。

三.Migrations
Migrations是指Flyway在更新数据库时是使用的版本脚本。

每次对数据库的更改,都应该新建一个脚本,而不能修改原有脚本。如果直接修改原有脚本,在Checksum的时候会失败。

Spring Boot项目中,该脚本默认放在db.migration目录下。Migrations不仅可以写成sql脚本,还可以写在Java代码中.

四.脚本命名
Flyway是约定优于配置,所以有对应的命名规范。sql脚本的命名类似V1__init_tables.sql ,也可以用当前时间作为V后面的版本号,如V20190603_1639__Create_Task_table.sql

五.支持的数据库
Flyway支持所有的主流数据库,如PostgreSQLMySQLH2Hsql等。

Spring boot项目使用Flyway

1.Gradle的配置文件build.gradle文件的依赖中增加Flyway

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compile('mysql:mysql-connector-java')
    implementation 'org.flywaydb:flyway-core'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

可以在https://start.spring.io直接生成addflywaydependencies的项目。

2.在application.properties文件中增加数据库配置

spring.datasource.url=jdbc:mysql://localhost:3306/flywayDB?autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=password

spring.flyway.url=jdbc:mysql://localhost:3306/flywayDB
spring.flyway.user=root
spring.flyway.password=password

3.在db.migration目录下新建脚本文件V20190603_1639__Create_Task_table.sql

CREATE TABLE `task` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `description` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

4.在确保mysql中有flywayDB数据库的情况下启动该应用,然后去数据库查看,会发现多了两个Tableflyway_schema_historytask

5.对应的代码库flyway-test

相关文章

  • Flyway 管理数据库版本变更

    一、 Flyway介绍 Flyway的定位:数据库的版本控制。 Flyway是一款开源的数据库版本管理工具,Fly...

  • Flyway 数据库迁移工具

    一、什么是Flyway? Flyway是一款开源的数据库版本管理工具,主要是用于数据库版本管理并且跟踪数据库变更。...

  • Flyway

    Flyway 1. Flyway是什么 Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现...

  • flyway数据库版本管理工具

    flyway数据库版本管理工具 Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyw...

  • Flyway使用-发布文章功能-获取GitHub头像-(3)

    1. Flyway的使用 Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲...

  • Springboot下集成flyway

    1、什么是Flyway?Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以...

  • SpringBoot+Flyway

    Flyway 数据库版本管理工具,支持数据库版本自动升级,支持多种数据库Oracle, SQL Server, S...

  • 使用Flyway管理你的Spring boot数据库版本

    引言 Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理...

  • flyway-数据库版本管理工具

    它是谁 flyway是一款开源的数据库版本管理工具,它可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升...

  • 「Flyway」数据库版本管理

    前言 什么是数据库版本管理,为什么要进行数据库版本管理? 传统的开发模式 团队的Developer可以使用git,...

网友评论

      本文标题:「Flyway」数据库版本管理

      本文链接:https://www.haomeiwen.com/subject/lgakxctx.html