flyway的学习

前言

数据库可以像代码一样, 使用flyway进行良好的版本控制。

介绍

空数据库-最简单的方式
  • flyway找不到schema history table时, 将创建默认名为flyway_schema_history的表。

  • flyway随后会扫描文件系统或application的classpath, 找到对应文件进行migrations。其可以是sql或java编写。

  • 每次migration生效后, flyway_schema_history中会生成一条记录。

    flyway_schema_history

  • 每次创建一个版本更高的migration, 当下次flyway运行时, 其将会找到并运行该migration来升级数据库。

非空数据库

指定baseline。

  • baselineOnMigrate 是否开启baseline, 默认为false。
  • baselineVersion 高于该指定版本的才会进行migrate。
  • baselineDescription 描述。
flyway -baselineOnMigrate=true -baselineVersion=1 -baselineDescription="aaa" migrate
command-line

以此种方式为例进行说明。

  • 下载对应系统的flyway command-line tool。

  • 进入到flyway文件夹。

    cd flyway-6.0.8
  • 配置./conf/flyway.conf

    flyway.url=jdbc:mysql://127.0.0.1:3306/flyway?serverTimezone=UTC
    flyway.user=
    flyway.password=
  • 在./sql目录下添加sql文件, 命名为V1__Create_person_table.sql, 注意V1后的下划线为两个, V是version的缩写, 1为版本号, __后的为此次操作的描述。

  • 执行flyway migrate, 即可在数据库看到改变。

    flyway-6.0.8> flyway migrate

还可通过API、maven、Gradle来实现, 其具体操作参见官方文档。

Repeatable Migrations

命名规则: R__people_view.sql, 即使用R代替V,并且无需指定版本号, 其总是最后生效, 且可保证多次重复执行。一般用于创建 views/procedures/functions/packages/…

Undo Migrations

命名规则: U2__Add_people.sql, U代替V, 其基于之前的migration均是成功的, 不能undo失败的migration。

当存在migration失败时, 需人工介入。

社区版不支持, 算了, 不用了。

Dry Runs

社区版不支持, 可生成该次会执行的sql改动, 便于检查。

SQL-based migrations

Naming

flyway-naming

Versioned可以省略Separator和Description(最好不要)。

Discovery

文件可以在filesystem或classpath, 分别使用对应的前缀, 即filesystem:classpath:

Syntax

flyway支持sql语义, 一行或多行语句。

单行注释(–)或多行注释(/**/)。

指定数据库的语义延伸。

Placeholder Replacement

flyway支持占位符。

Commands

7个命令: Migrate, Clean, Info, Validate, Undo, Baseline, Repair。

Migrate

flyway的中心功能, 其会扫描filesystem和classpath寻找可用的migration, 并与数据库里flyway_schema_history的版本进行比较, 执行需要执行的migration。

在启动时来执行migration, 避免数据库与代码的不一致。

Clean

在开发和测试环境很有用, 但不要在生产环境使用。

删除所有表, 试图, 存储过程, 触发器等。

Info

查看migrations的详细信息, 即flyway_schema_history的表信息。

Validate

校验可用的migration与已生效的migration。

参考

flyway官网

下载地址


文章作者: the next page
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 the next page !
评论
 上一篇
hexo博客的搭建 hexo博客的搭建
本文旨在讲述个人使用hexo及GithubPages搭建的过程。 主要参考最全Hexo博客搭建+主题优化+插件配置+常用操作+错误分析。 主题经对比, 选择hexo-theme-matery, demo为闪烁之狐, 贼拉好看。 下载主题至
2019-11-27 the next page
下一篇 
gRPC的学习 gRPC的学习
概览gRPC为Google的rpc实现, 使用proto buffer作为接口定义语言(Interface Definition Language, 即IDL)。 客户端可以像调用本地方法一样调用服务端方法。 在客户端保存有接口存根来进行方
2019-11-20 the next page
  目录