Flyway 工作原理

官方原文 下面都是官方的图,记录下自己的理解。 最简单的方式是让 Flyway 连接到一个空的数据库。 Flyway 会尝试找到历史表。由于数据库是空的, Flyway 不会找到,这时就会创建一个。 现在, 您的数据库中有一个名为 flyway_schema_history 的空表, 默认情况下为: 这个表用来跟踪数据库的变化。 之后Flyway立即将开始扫描应用程序的文件系统或类路径以进行迁移。 它们可以用Sql或Java编写。 然后,迁移将根据其版本号进行排序并按顺序应用: 在应用每个迁移时,模式历史记录表会相应更新: flyway_schema_history

installed_rank

version

description

type

script

checksum

installed_by

installed_on

execution_time

success

1

1

Initial Setup

SQL

V1__Initial_Setup.sql

1996767037

axel

2016-02-04 22:23:00.0

546

true

2

2

First Changes

SQL

V2__First_Changes.sql

1279644856

axel

2016-02-06 09:18:00.0

127

true

随着元数据和初始状态的到位,我们现在可以谈论迁移到更新的版本。 Flyway将再次扫描应用程序的文件系统或类路径以进行迁移。 将根据模式历史记录表检查迁移。 如果其版本号低于或等于标记为当前版本的版本号,则会被忽略。 剩余的迁移是待定迁移:可用,但不适用。 然后按版本号排序并按顺序执行: 模式历史记录表相应地更新: flyway_schema_history

installed_rank

version

description

type

script

checksum

installed_by

installed_on

execution_time

success

1

1

Initial Setup

SQL

V1__Initial_Setup.sql

1996767037

axel

2016-02-04 22:23:00.0

546

true

2

2

First Changes

SQL

V2__First_Changes.sql

1279644856

axel

2016-02-06 09:18:00.0

127

true

3

2.1

Refactoring

JDBC

V2_1__Refactoring

axel

2016-02-10 17:45:05.4

251

true

就是这样!每当需要发展数据库时,无论是结构(DDL)还是参考数据(DML),都只需创建一个版本号高于当前版本的新版本。 Flyway下一次启动时,会找到它并相应地升级数据库。