flyway简单使用

flyway作为数据库迁移的利器,下面简单说说它的使用,本例子是采用maven插件的形式整合flyway。

1. pom.xml配置

  
  org.flywaydb  
 flyway-maven-plugin  
 6.2.3  
  
    
 generate-sources  
  
 migrate  
  
  
   
  
  com.mysql.cj.jdbc.Driver  
 jdbc:mysql://xxxxx:3306/xxx?useUnicode=true  
 xxxx  
 xxxxx  
    
    
  
 
 

2.脚本路径

  • 脚本默认路径为classpath:/db/migration

3.脚本命名

  • V1__脚本_描述.sql

其中大写V为固定前缀,1表示版本号,可以采用小版本的写法,如1.1,1.2等。
版本号后面跟双下划线__,在后面跟脚本描述,脚本描述之间可以用单下划线_分隔
最后面就是sql后缀。

4.使用原则

  • 一旦脚本通过flyway执行后,脚本就不能再修改,如果需要添加sql,只能把sql放到新的版本脚本里面

例如:V1__脚本1.sql已经执行了,那么新的sql只能放到比V1版本号大的脚本里面去,如V1.2__脚本2.sql
或者V2__脚本2.sql。

  • flyway首次执行就会生成一个flaway_schema_history表去维护迁移的记录。

里面有个version字段,去表示当前最新的版本号,那么下次执行时flyway就会自动查找
比当前version大的脚本文件去执行。

  • flaway_schema_history还有一个checksum字段去校验已经执行过的脚本是否有变化,

如果V1__脚本.sql,已经执行过了,然后修改里面的内容,再次执行flyway就会报错,这就是
为什么一旦执行过的脚本不要去修改的原因。

4 插件命令详解

flyway:clean

清楚数据库的所有表(慎用!!!!)

flyway:baseline

默认情况下如果数据库已经有表了那么首次执行flyway会报错的。需要
先执行baseline,这样flyway就会生成一条version=1的记录表示当前的表的
版本是1。那么脚本的版本号只能从大于1开始命名

flyway:mygrate

数据库迁移,默认会查找版本号比flaway_schema_history#vesion大的脚本去执行
如果有多个,则按照升序的顺序执行。每迁移完一个脚本会往flaway_schema_history插入
一条历史记录。

你可能感兴趣的:(flyway)