1 什么是Flway
Flyway是一个用来版本控制Database的创建和修改的工具。就像控制JAVA的版本的工具SVN,GITHUB, Flyway是用来控制数据库metadata版本的工具。
2 Flway 如何对数据库做版本控制?
I) Flyway通过执行Locations下的sql files, 来初始化或update数据库。每个sql file都有一个version. 比如V1_0_1__Initial_Setup.sql的version为1.0.1。
II) Flyway 用一个表flyway_schema_history来记录曾经跑过的所有sql files. 如
III) Flyway 会在每次Server启动的时候,运行SQL File里的sql. Flyway会记录下每个sql file的checksum. 每次Flyway运行的时候,Flyway都会check这些file的checksum是否和上次的一样。如果Flyway发现有file的checksum和上一次不一样,Flyway会报错。
3 Flyway的属性
I)Enable: true表示Flyway enable了。 当Server启动时Flyway会检查和运行SQL。 false表示Flyway disable了,反之不会运行sql.
II)Schemas: Flyway操作的schema. 一个schema为primary schema. History table将会放在这个table中。
III)Locations: 放置SQL file 的地方
IV)baselineOnMigrate: 是否在已有内容的schema上run sql. 默认为false.
V)validateOnMigrate: 是否check file 的checksum.默认为true
VI)Target: 目标sql file. Flyway会run的最后一条sql.
VII)Placeholders: 通配符.可以动态传入参数给sql file. 如schema name.
4 实例视频
I) Flway 初始化 h2 数据库
注意:h2的数据库认为所有的Schema的name都是大写的,如果我们在sql file里写的schema不是所有字母都是大写的话,将会报错
II) Flway 初始化 mySql 数据库
III) Flyway 的常用属性的使用
5 参考文档
I) Flway 官方文档:https://flywaydb.org/documentation/
II) Flway 属性: https://flywaydb.org/documentation/maven/migrate
III) 项目实例 github: https://gitee.com/thomasweb/flyway.git
领取专属 10元无门槛券
私享最新 技术干货