flyway的使用

 

官网地址

flyway和liuqiubase对比

为什么使用flyway?

    进行数据库版本管理,迁移,摆脱人工手动执行脚本或者手动更改数据库字段的尴尬(特别是数据库比较多的时候).

使用背景

     在做一个框架平台的时候,因为多个项目和平台并行开发,导致平台每次进行版本升级的时候需要兼顾n多数据库的更新.

flywaydb的命名规则

如:V1__2014_4_13.sql ,V开头+版本号+双下划线+描述,描述中可以有下划线,后缀为sql.

支持的数据库

目前Flyway支持的数据库还是挺多的,包括:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL(including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL(including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix

默认版本记录表

schema_version

相关命令
清空数据库(慎用,会删除所有的数据库对象,包括表/视图/存储过程...),可以执行以下语句:

flyway clean
如果想恢复最新版本数据库结构,可以先清空数据库,再执行以下语句:

flyway migrate
如果想恢复特定版本数据库结构,可以先清空数据库,再执行以下语句:

flyway migrate -target=1.0.1.002
如果想查看当前数据库状态信息,可以执行以下语句:

flyway info
Flyway还有validate,baseline,repair等命令,并且支持Maven

Maven使用示例

  

       <plugin>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-maven-plugin</artifactId>
                <version>5.2.4</version>
                <configuration>
                    <url>jdbc:mysql://localhost:3306/20190124</url>
                    <user>portals</user>
                    <password>java</password>
                    <outOfOrder>true</outOfOrder>
                    <baselineOnMigrate>true</baselineOnMigrate>
                    <placeholderReplacement>false</placeholderReplacement>
                    <encoding>UTF-8</encoding>
                    <table>fsl_schema_version</table>
                    <locations>
                        <location>db/migration/</location>
                    </locations>
                </configuration>
            </plugin>
mvn flyway:migrate

或者命令指定数据库

          <properties>
              <flyway>true</flyway>
          </properties>


            <plugin>
                    <groupId>org.flywaydb</groupId>
                    <artifactId>flyway-maven-plugin</artifactId>
                    <version>5.2.4</version>
                    <configuration>
                        <skip>${flyway}</skip>
                    </configuration>
                <executions>
                    <execution>
                    <id>update</id>
                    <phase>process-resources</phase>
                    <configuration>
                        <url>${db.url}</url>
                        <user>${db.user}</user>
                        <password>${db.password}</password>
                        <outOfOrder>true</outOfOrder>
                        <baselineOnMigrate>true</baselineOnMigrate>
                        <placeholderReplacement>false</placeholderReplacement>
                        <encoding>UTF-8</encoding>
                        <table>fsl_schema_version</table>
                        <locations>
                            <location>db/migration/</location>
                        </locations>
                    </configuration>
                        <goals>
                            <goal>migrate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

执行更新命令则为

mvn process-resources -D flyway=false -D db.url=jdbc:mysql://127.0.0.1:3306/20190124 -D db.user=portals -D db.password=java

注意

 1.特别要注意脚本文件的正确性,一定要保证脚本的正确,否则脚本执行到一半发生错误就需要手动修复

 2.脚本文件如果已经执行过,便不要在进行任何更改(否则无法通过校验)

 3.如果使用了flyway进行版本管理,就不要单独执行任何sql,以保证flyway的脚本完整性

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值